java gc日志乱码_GC日志 - 大碗炸酱面

JVM参数设置

-XX:NewSize=5242880
-XX:MaxNewSize=5242880
-XX:InitialHeapSize=10485760
-XX:MaxHeapSize=10485760
-XX:SurvivorRatio=8
-XX:PretenureSizeThreshold=10485760
-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xloggc:

堆内存:10M

新生代:4MB

Survivor to/from:

老年代:5MB

大对象阈值:10M

程序代码

publicclass Demo1 {
    publicstaticvoid main(String[] args) {
//生成一个1M的数组 byte[] array1 = newbyte[1024 * 1024]; array1 = newbyte[1024 * 1024]; array1 = newbyte[1024 * 1024]; array1 = null; //生成一个2M的数组 byte[] array2 = newbyte[2 * 1024 * 1024]; } }

在生成一个2M的数组之前,JVM运行时内存图应该是这样的

c2fe98b17d9cfd7c415bae632aa2b8ad.png

 Eden 区有3个数组没有人引用,成了垃圾,共占用3M的内存,但是代码继续运行下去,需要在Eden区生成一个2M大小的数组

此时Eden区空间不够就会触发年轻代的Young GC

89fdd994f96960707995be61b6684cb7.png

 打开,日志如下所示

Java HotSpot(TM) 64-Bit Server VM () for windows-amd64 JRE (), built on Oct 5 2019 03:11:30 by "java_re" with MS VC++ (VS2010)
Memory: 4k page, physical 16603172k(7254628k free), swap 17717284k(6828216k free)

CommandLine flags: -XX:InitialHeapSize=10485760 -XX:MaxHeapSize=10485760 -XX:MaxNewSize=5242880 -XX:NewSize=5242880 -XX:OldPLABSize=16 -XX:PretenureSizeThreshold=10485760 -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:SurvivorRatio=8 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:-UseLargePagesIndividualAllocation -XX:+UseParNewGC

: [GC (Allocation Failure) : [ParNew: 3842K->512K(4608K), 0.0012121 secs] 3842K->1685K(9728K), 0.0013657 secs] [Times: user=0.13 sys=0.02, real=0.00 secs] Heap
par new generation total 4608K, used 3746K [0x00000000ff600000, 0x00000000ffb00000, 0x00000000ffb00000)
eden space 4096K, 78% used [0x00000000ff600000, 0x00000000ff9288e8, 0x00000000ffa00000)
from space 512K, 100% used [0x00000000ffa80000, 0x00000000ffb00000, 0x00000000ffb00000)
to space 512K, 0% used [0x00000000ffa00000, 0x00000000ffa00000, 0x00000000ffa80000)
concurrent mark-sweep generation total 5120K, used 1173K [0x00000000ffb00000, 0x0000000100000000, 0x0000000100000000)
Metaspace used 3251K, capacity 4496K, committed 4864K, reserved 1056768K
class space used 354K, capacity 388K, committed 512K, reserved 1048576K

日志详解

CommandLine flags:虚拟机启动时的参数

GC (Allocation Failure):对象分配失败

:系统运行以后过了多少秒发生了此次GC,本次是93ms

ParNew: 3842K->512K(4608K),0.0012121 secs:此次GC是用ParNew垃圾收集器回收,新生代总空间为4608K(一个Eden4M+一个Survivor(必须保证有一个survivor是空闲的)=) ,GC之前使用了3842K,GC后只有512K的对象存活,耗时1.2ms

3842K->1685K(9728K), 0.0013657 secs:同上,表示整个堆内存的情况,总的堆内存9728k(新生代+老年代5M)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值