java中堆和栈的不同
来源:互联网 发布:网络道德存在的问题 编辑:程序博客网 时间:2024/06/07 09:36
内存区域主要分为堆、栈、代码区和数据区
其中代码区主要存放程序中的二进制代码
数据区主要用于存放常量数据。
java中的堆和栈都是内存的一部分。它们之间的区别主要体现在以下方面。
1、分配时机的不同
对于栈和堆来说都是运行时分配存储空间,但是栈是在进入代码区域的时候就要确定需要分配的存储空间的大小。而堆可以在运行过程中动态的分配内存空间大小,如动态创建对象。
2、存储内容的不同
栈主要用来存放局部变量和方法调用。堆主要用来存放创建的对象和数组。
3、是否能够共享
栈中的数据可以共享,当向栈中放入数据的时候,首先放一个变量名的引用,然后查找栈中是否已经有该数据,如果有该数据就将该引用指向该数据,如果没有就将该数据插入到分配的栈空间。
4、可见范围的不同
每个线程都有自己独立的栈空间,所以每个线程的栈空间是线程独有的。所以栈内存是线程的独有内存。而堆内存中的对象对于所有线程可见。
5、大小不同
一般堆内存要远远大于栈内存
6、出错的异常信息不同
如果栈内存没有可用的空间存储方法调用和局部变量,JVM会抛出java.lang.StackOverFlowError。而如果是堆内存没有可用的空间存储生成的对象,JVM会抛出java.lang.OutOfMemoryError。
0 0
- java中堆和栈的不同
- 详细介绍Java中堆、栈 和常量池的不同使用
- 简述java中堆与栈的不同
- 简述java中堆与栈的不同
- Java中堆和栈的区别
- Java中堆和栈的区别
- Java中堆和栈的分析
- Java中堆和栈的区别
- Java中堆和栈的区别
- Java中堆和栈的区别
- JAVA中堆和栈的区别
- Java中堆和栈的区别
- Java中堆和栈的区别
- JAVA中堆和栈的区别
- java中堆和栈的区别
- Java中堆和栈的区别
- Java中堆和栈的区别
- Java中堆和栈的区别
- P51 18
- [leetcode]Populating Next Right Pointers in Each Node
- oc- NSLog中文乱码如何解决?(已解决)
- 算法提高 日期计算
- BZOJ-2618-凸多边形-CQOI2006
- java中堆和栈的不同
- cache和buffer的区别
- 数据结构学习——栈的出栈次序及次序种类
- Assets的使用,外部sql文件,并显示在listview中
- 每一个有理想的程序员都应该读的一本书-《rework》
- 矩阵乘法的MapReduce程序设计与实现
- php设计模式学习记录(上)
- hibernate的one-to-many
- 【练习LV2】home ==> four