[讨论] 奇怪的System.gc()
richard_2010
2011-07-23
代码很简单: public class GCTest { public static void main(String[] args) { GCTest gcTest = new GCTest(); System.gc(); } }
|
|
richard_2010
2011-07-23
撒迦帮忙看下啊。。。
RednaxelaFX编辑:我还在机场等飞机…本上没client VM来重现你说的状况所以暂时帮不上忙。明天吧… |
|
richard_2010
2011-07-27
撒迦还没回来?明天还得上课吧?
|
|
RednaxelaFX
2011-07-27
richard_2010 写道 问题是为什么垃圾回收器运行后,新生代里面存活的对象直接竞升到旧生代里去了?-client模式。
嗯,一开始没看清楚你的问题。刚看了一下觉得挺简单的。 HotSpot的GC除了G1之外默认在System.gc()的时候是做全堆收集的。G1我还没仔细看所以这里不评论。 在做完全堆收集后,young gen默认是要[尽量]清空的,所以执行System.gc()时在young gen里活着的对象都会直接晋升。HotSpot里的这些GC实现就这么设计的。对象的“年龄”是在做young GC的时候才会被考虑。 是不是分代式GC就一定要这样呢?不一定,没这种强制的规定。 甚至对象的“年龄”是不是一定要用“经历young GC的次数”来定义也不一定,虽然HotSpot采用这样的定义,但在别的地方也存在别的实现。 |
|
richard_2010
2011-07-27
原来还有一个“尽量”清空的原则。。。我懂了
甚至对象的“年龄”是不是一定要用“经历young GC的次数”来定义也不一定 --------------------- 恩。这个倒听说过。 谢谢啦。 |
相关讨论
相关资源推荐
- java system 引入_关于java:显式调用System.gc()?
- java system.gc() 有用吗_Java问题案例分析---谁调用了system.gc()
- java system.gc()方法_关于Java中System.gc() 与System.runFinalization()
- java.lang.System快速指南
- 记录一次jvm调优问题,GC (Metadata GC Threshold) ,GC (System.gc())
- Unity优化大全(三)之CPU-GC(内存回收)和Sricpt
- JDK的bug导致Java文件删除不了,必须fgc
- 深入分析Java中打印对象内存地址 System.identityHashCode()方法
- [C#] 解决Silverlight反射安全关键(SecuritySafeCritical)时报“System.MethodAccessException: 安全透明方法 XXX 无法使用反射访问”的...
- 每小时一次定时FullGC问题解决