关于GC的log文件内容问题

第一周第二次作业要求在设置CMS GC和ParallelOldGC两种情况下打印log文件,下图分别为我打印出的log文件
问题:log文件的内容并没有出现Parnew或者Concurrent的各个阶段(如ppt里的截图)这种字样,而是DefNew或者PSYoungGen,请问问题在哪里?
w1_n2_3.1_.png w1_n2_3.2_.png

fish - Hadooper

赞同来自: hello_world jnchen 编程小梦

PSYoungGen就是ParallelOldGC的输出。 对于CMS,我看你第一个命令中用的-XX:-UseParNewGC,UseParNewGC前面这个减号是指不使用这个GC方式。   不过我们的云主机是单核的,所以声明了UseParNewGC之后依然会显示DefNew,其实就是DefNewGeneration,默认的新生代收集器。   至于没有CMS的相应的输出,应该是你的虚拟机还没触发old GC的缘故,可以通过jstat -gcutil <pid> 2000 2000看看是否年老代GC触发了。   同时,执行任务的时候,可以类似这样,把heap设置小些让GC尽快触发: java -cp xxx.jar -Xmx10m -verbose:gc -XX: PrintGCDetails -XX: PrintGCDateStamps -XX: UseConcMarkSweepGC -XX: UseParNewGC -Xloggc:/tmp/gc.log <main_class>   在程序中,可以设置一个全局map,不断往里放对象,让内存尽快被占满:
1.png
 

zhdd - 一句话介绍

赞同来自:

我也遇到了类似的情况,一直没有ppt截图的cms的信息出现 下面贴上我的代码和执行结果,,麻烦谁帮忙看一下。
1.png
2.png
我晚上睡觉前跑了这个程序,第二天上午发现它貌似在6点多的时候结束了,有三四个小时的运行时间吧。
3.png
4.png
 

fish - Hadooper

赞同来自:

用jstat -gcutil看看heap的状态是如何的? 循环会被虚拟机优化。   像我上面的代码那样,把while循环变成个有限的数字作为判断条件,同时在while后面放置一个打印map所有成员的操作。   还可以将Thread.sleep(1)先去掉,执行的时候用java -Xmx10m,将heap限制到一个较小的范围 执行一下程序很快会oom(oom之前肯定会调用old GC)

colincheng - 大数据工程师@易宝支付

赞同来自:

@fish:PSYoungGen就是ParallelOldGC的输出。 我怎么记得PSYoungGen不是ParallelOldGC呢,从语义讲PSYoungGen是针对年青代的,而ParallelOldGC是针对ParallNewGC的老年代回收呢    

要回复问题请先登录注册