java虚拟机日志_实战java虚拟机-第三章常用java虚拟机参数(日志详解)

仅阅读记录,后期持续更新。

-XX:PrintGC:使用这个参数启动java虚拟机后只要遇到GC就会打印日志:

12.391: [GC (Allocation Failure) 283573K->40373K(515584K), 0.0082452 secs]

12.923: [GC (Allocation Failure) 285109K->42973K(516096K), 0.0061735 secs]

13.285: [GC (Allocation Failure) 288221K->44621K(515584K), 0.0069003 secs]

日志显示:一共进行了三次回收,会显示堆空间以及当前堆空间总量

13.285: [GC (Allocation Failure) 288221K【GC前堆空间使用量】->44621K【GC之后堆空间用量】(515584K【堆空间总量】), 0.0069003 secs]

-XX:+PrintGCDetails:会打印详细GC信息,并且会在推出之前打印详细堆栈信息

20.204: [GC (Allocation Failure) 20.204: [ParNew: 233451K->20677K(235968K), 0.0135505 secs] 284355K->74717K(498112K), 0.0136523 secs] [Times: user=0.13 sys=0.00, real=0.02 secs]

21.228: [GC (Allocation Failure) 21.228: [ParNew: 230469K->20838K(235968K), 0.0128963 secs] 284509K->75961K(498112K), 0.0130553 secs] [Times: user=0.13 sys=0.00, real=0.02 secs]

52.528: [GC (Allocation Failure) 52.528: [ParNew: 230630K->17171K(235968K), 0.0102006 secs] 285753K->73133K(498112K), 0.0103159 secs] [Times: user=0.11 sys=0.00, real=0.02 secs]

Heap

par new generation total 235968K, used 50796K [0x00000000e0000000, 0x00000000f0000000, 0x00000000f0000000)

eden space 209792K, 16% used [0x00000000e0000000, 0x00000000e20d6450, 0x00000000ecce0000)

from space 26176K, 65% used [0x00000000ecce0000, 0x00000000edda4fa8, 0x00000000ee670000)

to space 26176K, 0% used [0x00000000ee670000, 0x00000000ee670000, 0x00000000f0000000)

concurrent mark-sweep generation total 262144K, used 55961K [0x00000000f0000000, 0x0000000100000000, 0x0000000100000000)

Metaspace used 65306K, capacity 66240K, committed 66688K, reserved 1107968K

class space used 8247K, capacity 8463K, committed 8576K, reserved 1048576K

详解:

52.528【时间戳】: [GC (Allocation Failure)【表明本次引起GC的原因是因为在年轻代中没有足够的空间能够存储新的数据了-分配失败】 52.528: [ParNew【表明本次GC发生在年轻代并且使用的是ParNew垃圾收集器】:

230630K->17171K(235968K)【三个参数分别为:GC前该内存区域(这里是年轻代)使用容量,GC后该内存区域使用容量,该内存区域总容量】, 0.0102006 secs【用时】]

285753K->73133K(498112K)【三个参数分别为:堆区垃圾回收前的大小,堆区垃圾回收后的大小,堆区总大小】, 0.0103159 secs【用时】]

[Times: user=0.11 sys=0.00, real=0.02 secs]【 分别表示用户态耗时,内核态耗时和总耗时】

备注:参考https://blog.csdn.net/zc19921215/article/details/83029952

-XX:+PrintHeapAtGC:会在每次GC前后打印堆信息

-XX:+PrintGCTimeStamps:额外输出每次GC发生时间,该输出时间为虚拟机启动后时间偏移量,如下:代码表示在系统启动后的0.748,1.450,1.759发生了3此GC

0.748: [GC (Allocation Failure) [PSYoungGen: 196608K->3200K(229376K)] 196608K->3272K(491520K), 0.0037620 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]

1.450: [GC (Allocation Failure) [PSYoungGen: 199808K->3696K(229376K)] 199880K->3776K(491520K), 0.0037105 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]

1.759: [GC (Allocation Failure) [PSYoungGen: 200304K->4560K(229376K)] 200384K->4648K(491520K), 0.0046255 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]

-XX:+PrintGCApplicationConcurrentTime:可以打印程序执行时间

-XX:+PrintGCApplicationStoppedTime:可以打印应用程序由于GC而产生的停顿时间

11.839: [GC (Allocation Failure) [PSYoungGen: 246432K->2048K(253440K)] 283582K->40694K(515584K), 0.0055645 secs] [Times: user=0.11 sys=0.01, real=0.01 secs]

11.845: Total time for which application threads were stopped: 0.0058329 seconds, Stopping threads took: 0.0000321 seconds

12.054: Total time for which application threads were stopped: 0.0001072 seconds, Stopping threads took: 0.0000445 seconds

-Xloggc:var/GC/gc.log【日志路径】:将GC日志文件打印到指定目录

堆参数配置

-Xms:堆的初始大小,默认值为总物理内存的64分之一

-Xmx:堆的最大值-最大可用内存

注意:如果-Xms和-Xmx的值不同,表示堆的大小是可变的,这会导致抖动现象,所以建议把-Xms和-Xmx设置为一样大小。

-Xmn:该参数设置新生代内存的大小(伊甸园空间、幸存者From空间、幸存者To空间),设置一个较大的新生代会减少老年代的大小,这个参数对系统性能以及GC行为有很大的影像,新生代大小一般设置为整个堆空间的1/3到1/4左右。

-Xss:用于设置线程的栈内存的大小,栈内存默认值为1M

-XX:+HeapDumpOnOutOfMemoryError:OOM时可以到处整个堆信息,配合-XX:HeapDumpPath时候

-XX:HeapDumpPath=var/GC/gc.log【日志路径】:可以指定导出堆的存放路径

方法区配置

JDK6和JDK7版本中可使用-XX:PermSize【初始永久区大小】和-XX:MaxPermSize【最大永久区大小】配置永久区大小

JDK8永久区被彻底移除,使用新元素数据区存放类元数据。默认情况下元数据区只受系统可用内存的限制,可以使用-XX:MaxMetaspaceSize指定元素区最大可用值,这是一块堆外的系统内存,与永久区不同若不指定默认情况下虚拟机会耗尽所有系统可用内存

直接可用内存配置

-XX:MaxDirectMemorySize:最大可用直接内存可用大小,若不配置则默认使用最大堆空间,既-Xmx。当直接内存用量达到-XX:MaxDirectMemorySize就会触发垃圾回收,若垃圾回收不能释放足够空间,会抛出OOM。

参考《实战java虚拟机》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值