当前位置: 代码迷 >> J2SE >> jvm内存容易可划分为堆和栈,请简述一下你对堆栈的理解,堆栈分别存储一些什么样的数据,gc回收时是先回收堆还是先回收栈,为什么
  详细解决方案

jvm内存容易可划分为堆和栈,请简述一下你对堆栈的理解,堆栈分别存储一些什么样的数据,gc回收时是先回收堆还是先回收栈,为什么

热度:556   发布时间:2016-04-23 20:34:04.0
jvm内存简单可划分为堆和栈,请简述一下你对堆栈的理解,堆栈分别存储一些什么样的数据,gc回收时是先回收堆还是先回收栈,为什么?
jvm内存简单可划分为堆和栈,请简述一下你对堆栈的理解,堆栈分别存储一些什么样的数据,gc回收时是先回收堆还是先回收栈,为什么?
------解决方案--------------------
Jvm 不光只有堆和栈 ,但是大多数的时候,我们只关心堆栈,简单来说,堆就是共享区域,栈是线程私有区域。gc是针对堆进行垃圾回收的,栈是线程创建的时候就固定了的,它跟线程是绑定的。  对象 ,类信息  ,常量等都是保存在堆中。gc有很多中,但1.7以后基本上都是用的G1
------解决方案--------------------
堆中一般存放你创建的对象,比如调用new XXX
而栈中存放的一般是局部变量
栈是线程私有的,而堆中数据是共享的。
GC只关心堆中的数据,它会实时监控堆中的对象
一般来说,当一个对象到GC ROOTS不可达时,那么下次垃圾回收运行时就会将它回收
  相关解决方案