7个答案 按时间排序 按投票排序
-
我跟楼主有同样的疑惑,我启动tomcat后(当然tomcat中有我的应用),然后什么都没有做,也没有开启访问线程,通过visualvm看到Eden区不断的增长,等到达到它的阀值时即触发minor GC,Eden区大家都知道是存放朝生夕死的对象,很容易被回收,勿容置疑,但现在的问题是在不开启任何线程的情况下,为什么它会不断的增长呢?难道真的像楼上所说,Eden区总是要不断增长的?希望有这方面的高手能帮忙解惑.
2013年7月22日 15:36
-
楼主你好,Eden区就是用来存放新创建的对象的,经过minor Gc之后,会把存活的对象放到其Survior区中,再经过几次minor Gc后存活的对象会被放到Old区。所以总体来说Eden总是会不断增长的,并不断的minor Gc,当然可以通过增大Eden区的大小来减少minor Gc的次数。Full Gc相对来说更影响程序的性能。因为其执行时程序会暂停。要分析的话可以通过jdk 1.6的jvisualVm,安装其插件Virsual GC,可以很清楚的观察到各个区的情况。
2013年5月24日 10:21
-
以下描述以xp系统下eclipse下启动的java类为例:
进入jdk安装目录---C:\Program Files\Java\jdk1.6.0_11\bin,打开jconsole.exe,vm摘要选项卡,连接名称为pid: 6920 com.zyn.EmbededTomcat
,进入cmd命令窗口, C:\Documents and Settings\Administrator\jmap -dump:format=b,file=eclipse.bin 6920 ,6920为java进程的pid,回车,显示heap dump file created后再命令行窗口键入:C:\Documents and Settings\Administrator\jhat eclipse.bin ,显示Server is ready后,打开浏览器,输入http://localhost:7000后就可以看到分析日志了,拉到页尾,点击Other Queries标题下的Show instance counts for all classes (including platform) ,
Show instance counts for all classes (excluding platform) 两个连接可以看到jvm中所有类的数目,点击 Execute Object Query Language (OQL) query 可以根据OQL语言来查询自己想要的信息。2013年5月23日 19:47
相关推荐
第一次触发gc时,Eden存活的对象被复制到Survivor Space的To区。每次gc完成后,Eden和From区的数据被清空,用于存放新的数据,且Survivor Space的2个区域地位对调,原来的From区成为To区,原来的To区变成From区,...
当Eden区满时,会触发Minor GC,将存活对象晋升到Survivor区,经过多次Minor GC后仍然存活的对象会被转移到老年代。老年代则存放长期存活的对象,当其空间不足时,会触发Major GC或Full GC。元空间是Java 8引入的新...
当Eden区满时,会触发Minor GC,存活下来的对象会被移动到Survivor区。 2. 老年代GC(Major GC 或 Full GC) 老年代GC处理的是长期存活的对象,使用标记-整理或标记-压缩算法。当老年代空间不足或系统请求Full GC...
新生成的对象首先分配在Eden区,当Eden空间不足时,GC启动Minor GC,将存活的对象复制到Survivor空间,然后清理Eden。在多次GC循环后,幸存下来的对象将被晋升到旧域。 新域采用复制算法,其设计目的是减少内存碎片...
大部分对象在Eden区被创建,经过一次GC后,存活的对象会被移到Survivor区,然后再经过几次GC仍然存活的对象会被晋升到老年代。 2. **老年代(Tenured Generation)**:老年代用于存储生命周期较长的对象。当新生代...
- 新创建的对象首先在Eden空间分配,经过一次或多次GC后仍然存活的对象会被转移到Survivor空间或老年代。 - 这种设计基于观察结果:大多数对象很快就会死亡,只有少数会长期存活。 2. **GC类型** - Minor GC:...
当Eden区满时,会触发Minor GC,将存活的对象复制到Survivor区,无法容纳的直接晋升到老年代。 - **老年代GC**:当老年代空间不足时,会触发Major GC,清理整个老年代。 - **全堆GC**:包括新生代和老年代的全部...
### JVM_GC_调优总结 #### 一、GC(Garbage Collection)概述 **1.1 GC的概念** - **定义**: GC(Garbage Collection),即垃圾收集器,用于跟踪内存中的对象,并自动回收那些不再被其他对象引用的对象,释放这...
如果Eden区的空间不足以容纳新创建的对象,JVM会触发Minor GC,清理Eden区不再使用的对象。在这个过程中,幸存下来的对象将被移动到Survivor区(通常包括From Space和To Space)。 2. **大对象直接进入老年代** 大...
当Eden区满时,会触发Minor GC,将存活的对象移到另一个Survivor区或直接晋升到老年代。 2. **Major GC / Full GC**:针对老年代的垃圾回收,通常在老年代空间不足时发生。Full GC会清理整个堆内存,包括年轻代和老...
全GC(Full GC)是JVM进行垃圾回收的一种模式,主要涉及堆内存(包括年轻代和老年代)以及方法区的清理。它通常会在以下几种情况下触发: 1. 年轻代空间不足,晋升到老年代的对象数量超过阈值,导致 Minor GC 后仍然...
当Eden区空间不足时,会触发Minor GC。相反,Full GC涉及整个堆(包括新生代和老年代),通常在老年代空间不足或系统需要彻底清理时触发,其执行速度相对较慢。 HotSpot JVM提供了多种垃圾收集器,如Serial、...
对象通常在Java堆的新生代的Eden区创建,当Eden区空间不足时,会触发一次Minor GC(年轻代垃圾收集),将Eden区和From Survivor区存活的对象复制到To Survivor区,并清空Eden区和From Survivor区。如果对象经过多次 ...
对象晋升到老年代的条件通常是:在Eden出生并经历一次Minor GC后存活,或者直接是大对象,或者年龄达到阈值(默认15),这可以通过-XX:MaxTenuringThreshold设置。 理解JVM内存管理和垃圾收集机制对于优化Java应用...
当Eden区满时,会触发Minor Garbage Collection(Minor GC,也称为Young GC),存活下来的对象会被移动到Survivor区。如果对象在多次Minor GC后仍然存活,它们会被晋升到老年代。默认情况下,年轻代和老年代的默认...
- **分配内存时Eden区不足**:当Eden区空间不足以分配新对象时,会触发一次新生代GC。 - **全量GC前**:默认情况下,在进行全量GC之前,会先进行一次新生代GC。 ##### 4.2 对象晋升机制 - **经历多次Minor GC后...
大部分对象在Eden区创建,经历Minor GC后存活的对象会被转移到Survivor区。 3. 老年代(Old Generation):长期存活的对象进入老年代,当老年代空间不足时触发Major GC(Full GC)。 4. 方法区(Method Area):存储...
新生代又进一步细分为Eden区和两个Survivor区(From Space和To Space),大多数对象首先在Eden区分配内存,经历第一次GC后,存活下来的对象会被移动到Survivor区,反复几次后仍未被销毁的对象将晋升至老年代。...
- **Minor GC**:当年轻代中的eden区空间不足时触发,主要回收年轻代中的对象。 - **Full GC**:当老年代空间不足或者系统检测到内存压力过大时触发,会清理整个堆内存,包括年轻代和老年代。 GC策略的选择和配置...