deyimasf 2012-01-20 00:33
浏览 219
已采纳

<<深入理解java虚拟机:JVM高级测性与最佳实践>> 关于gc的菜鸟级提问

<<深入理解java虚拟机>> 关于gc的菜鸟级提问
在本书的第五章:"调优案例分析与实践" 中的127页,有一个"代码清单5-9 Full GC 记录"
针对该GC记录进行提问
1.DefNew是什么意思(感觉是新生代,作者从未提起这个代表什么,全拼是什么)
2.个人理解如果以[GC 开头的就是Minor GC,只收集新生代; 以[Full GC开头的就是所谓的全局GC,它同时会收集老年代、持久带、新生代,但是作者为什么说着10次GC都是Full GC
3.[Full GC的触发条件是什么,个人理解只要老年代空间不够就会触发[Full GC
4.另外该日志中各个时间都代表什么意思

摘自网络上的例子GC日志:
0.246: [GC 0.246: [DefNew: 1403K->105K(1984K), 0.0109275 secs] 1403K->1277K(6080K), 0.0110143 secs]

1.133: [GC 1.133: [DefNew: 960K->64K(960K), 0.0012208 secs]1.135: [Tenured: 7334K->7142K(7424K), 0.0213756 secs] 7884K->7142K(8384K), [Perm : 364K->364K(12288K)], 0.0226997 secs] [Times: user=0.01 sys=0.00, real=0.02 secs]

  • 写回答

1条回答 默认 最新

  • 奇美信软件 2012-01-29 11:42
    关注

    上面的信息通过参数-XX:+PrintGCTimeStamps输出,不同参数(-verbose:gc,-XX:+PrintGCDetails)输出格式略有不同。
    1. DefNew表示新生代使用serial垃圾收集器,这里用来标示GC方式;使用ParNew收集器显示为ParNew,使用Parallel Scavenge收集器这里显示为PSYoungGC。
    2. 因为老年代每次都出现垃圾回收,所以确定出现了10次FullGC。至于前面为何显示为GC,求解答。
    3. Full GC触发有以下几个条件:显示调用System.gc();旧时代空间不足;永久区空间已满;CMS GC出现promotion failed和concurrent mode failure; 统计得到的Minor GC晋升到旧生代的平均大小大于旧时代的剩余空间。
    4. [quote]1.133: [GC 1.133: [DefNew: 960K->64K(960K), 0.0012208 secs]1.135: [Tenured: 7334K->7142K(7424K), 0.0213756 secs] 7884K->7142K(8384K), [Perm : 364K->364K(12288K)], 0.0226997 secs] [Times: user=0.01 sys=0.00, real=0.02 secs] [/quote]
    各个时间的含义:
    1.133表示程序运行开始后1.133秒出现新生代垃圾回收; 0.0012208表示新生代的垃圾回收时间。
    1.135表示程序运行开始后1.135秒出现老年代垃圾回收;0.0213756 secs表示老年代的垃圾回收时间;0.0226997 secs表示持久代的垃圾回收时间;
    [quote]Times: user=0.01 sys=0.00, real=0.02 secs[/quote]前两项表示gc占用cpu user和sys的百分比,real指gc消耗的总时间。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退