设为首页 加入收藏

TOP

Java垃圾收集器之ParNew收集器(二)
2015-02-02 14:17:08 来源: 作者: 【 】 浏览:24
Tags:Java 垃圾 收集器 ParNew
0, 0x05a10000)


? the space 20480K,? 99% used [0x04610000, 0x05a052b8, 0x05a05400,0x05a10000)


?


4、可扩展的JAVA虚拟机空间


使用源代码中对应的outOfMemoryByExpansionSize方法和配套的参数。


运行结果如下:


[GC [ParNew: 1990K->132K(2112K),0.0007742 secs] 24112K->24110K(30528K), 0.0007964 secs] [Times: user=0.00sys=0.00, real=0.00 secs]


[GC [ParNew: 1990K->130K(2112K),0.0008112 secs] 25969K->25965K(30528K), 0.0008477 secs] [Times: user=0.00sys=0.00, real=0.00 secs]


[GC [ParNew: 1988K->130K(2112K),0.0009319 secs] 27823K->27821K(30528K), 0.0009553 secs] [Times: user=0.00sys=0.00, real=0.00 secs]


[GC [ParNew: 1991K->134K(2112K),0.0008219 secs][Tenured: 29548K->29551K(29568K), 0.0031503 secs] 29682K->29679K(31680K),[Perm : 2086K->2086K(12288K)], 0.0040531 secs] [Times: user=0.01 sys=0.00,real=0.00 secs]


[GC [ParNew: 2562K->194K(2880K),0.0024877 secs] 32113K->32113K(40704K), 0.0025124 secs] [Times: user=0.00sys=0.00, real=0.00 secs]


[GC [ParNew: 2756K->196K(2880K),0.0010854 secs] 34676K->34680K(40704K), 0.0011096 secs] [Times: user=0.00sys=0.00, real=0.00 secs]


[GC [ParNew: 2758K->196K(2880K),0.0011059 secs] 37243K->37241K(40704K), 0.0011285 secs] [Times: user=0.03sys=0.00, real=0.00 secs]


[GC [ParNew: 2758K->2758K(2880K),0.0000123 secs][Tenured: 37045K->37813K(37824K), 0.0037394 secs]39803K->39798K(40704K), [Perm : 2086K->2086K(12288K)], 0.0037977 secs][Times: user=0.00 sys=0.00, real=0.00 secs]


[Full GC [Tenured:37813K->37813K(37824K), 0.0034278 secs] 40569K->40567K(40704K), [Perm :2086K->2086K(12288K)], 0.0034685 secs] [Times: user=0.00 sys=0.00, real=0.00secs]


[Full GC [Tenured:37813K->37792K(37824K), 0.0107084 secs] 40567K->40546K(40704K), [Perm :2086K->2084K(12288K)], 0.0107696 secs] [Times: user=0.01 sys=0.00, real=0.01secs]


Exception in thread "main"java.lang.OutOfMemoryError: Java heap space


? ? atcom.gc.EasyParNew.(EasyParNew.java:12)


? ? atcom.gc.EasyParNew.outOfMemoryByExpansionSize(EasyParNew.java:39)


? ? atcom.gc.EasyParNew.main(EasyParNew.java:14)


Heap


?par new generation? total 2880K, used 2810K [0x03bf0000,0x03f00000, 0x03f00000)


?eden space 2624K,? 99% used[0x03bf0000, 0x03e7e8e8, 0x03e80000)


?from space 256K,? 75% used[0x03ec0000, 0x03ef0030, 0x03f00000)


?to? space 256K,? 0% used [0x03e80000, 0x03e80000, 0x03ec0000)


?tenured generation? total 37824K, used 37792K [0x03f00000,0x063f0000, 0x063f0000)


? the space 37824K,? 99% used[0x03f00000, 0x063e82e0, 0x063e8400, 0x063f0000)


?compacting perm gen? total 12288K, used 2105K [0x063f0000,0x06ff0000, 0x0a3f0000)


? the space 12288K,? 17% used [0x063f0000, 0x065fe4a8, 0x065fe600,0x06ff0000)


?


5、ParNew收集器和Serial收集器的差异


ParNew收集器在单CPU的环境中绝对不会有比Serial收集器更好的效果,甚至由于存在线程交互的开销,该收集器在通过超线程技术实现的两个CPU的环境中都不能百分之百地保证能超越Serial收集器。当然,随着可以使用的CPU的数量的增加,它对于GC时系统资源的利用还是很有好处的。它默认开启的收集线程数与CPU的数量相同,在CPU非常多(譬如32个,现在CPU动辄就4核加超线程,服务器超过32个逻辑CPU的情况越来越多了)的环境下,可以使用-XX:ParallelGCThreads参数来限制垃圾收集的线程数。


?


并行(Parallel):指多条垃圾收集线程并行工作,但此时用户线程仍然处于等待状态。


并发(Concurrent):指用户线程与垃圾收集线程同时执行(但不一定是并行的,可能会交替执行),用户程序继续运行,而垃圾收集程序运行于另一个CPU上。


[GC [DefNew:1986K->128K(2112K), 0.0011191 secs] 27809K->27808K(30528K), 0.0011425secs] [Times: user=0.00 sys=0.01, real=0.00 secs]



[GC [ParNew:1990K->132K(2112K), 0.0007742 secs] 24112K->24110K(30528K), 0.0007964secs] [Times: user=0.00 sys=0.00, real=0.00 secs]


其中的GC [ParNew 表示使用的是parNew收集器。


GC [D

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Java垃圾收集器之Parallel Scaven.. 下一篇Java垃圾收集器之Serial收集器

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: