JVM性能调优(2) —— 内存设置和查看GC日志

2023-06-30

本文主要是 JVM性能调优(2) —— 内存设置和查看GC日志 相关的知识问答,如果你也了解,请帮忙补充。

参考知识1

1)JVM内存分配有如下一些参数:

一般 -Xms 和 -Xmx 设置一样的大小,-XX:MetaspaceSize 和 -XX:MaxMetaspaceSize 设置一样的大小。-Xms 等价于 -XX:InitialHeapSize,-Xmx等价于-XX:MaxHeapSize;-Xmn等价于-XX:MaxNewSize。

2)在IDEA中可以按照如下方式设置JVM参数:

3)命令行启动时可以按照如下格式设置:

1)设置GC参数:

可以在启动时加上如下参数来查看GC日志:

例如,我在IDEA中添加了如下JVM启动参数:

启动程序之后打印出了如下的一些日志:

从第三行 CommandLine flags 可以得到如下的信息:

2)查看默认参数:

如果要查看JVM的默认参数,就可以通过给JVM加打印GC日志的参数,就可以在GC日志中看到JVM的默认参数了。

还可以在启动参数中添加 -XX:+PrintFlagsFinal 参数,将会打印系统的所有参数,就可以看到自己配置的参数或系统的默认参数了:

3)GC日志:

之后的日志就是每次垃圾回收时产生的日志,每行日志说明了这次GC的执行情况,例如第四行GC日志:

详细内容如下:

2020-09-25T13:00:41.631+0800:GC发生的时间点。
4.013:系统运行多久之后发生的GC,单位秒,这里就是系统运行 4.013 秒后发生了一次GC。
GC (Allocation Failure):说明了触发GC的原因,这里是指对象分配失败导致的GC。
PSYoungGen:指触发的是年轻代的垃圾回收,使用的是 Parallel Scavenge 垃圾回收器。
419840K->20541K:对年轻代执行了一次GC,GC之前年轻代使用了 419840K,GC之后有 20541K 的对象活下来了。
(472064K):年轻代可用空间是 472064K,即 461 M,为什么是461M呢?因为新生代大小为 512M,Eden 区占 409.6M,两块 Survivor 区各占 51.2M,所以年轻代的可用空间为 Eden+1个Survivor的大小,即460.8M,约为461M。
419840K->20573K:GC前整个堆内存使用了 419840K,GC之后堆内存使用了 20573K。
(996352K):整个堆的大小是 996352K,即 973M,其实就是年轻代的 461M + 老年代的 512 M
0.0118345 secs:本次GC耗费的时间
Times: user=0.00 sys=0.00, real=0.01 secs:本次GC耗费的时间
4)JVM退出时的GC情况:

程序结束运行后,还会打印一些日志,就是第12行之后的日志,这部分展示的是当前堆内存的使用情况:

详细内容如下:

相似知识
ElasticSearch性能优化实践(JVM调优+ES调优) 参考知识1近一年内对公司的ELK日志系统做过性能优化,也对SkyWalking使用的ES存储进行过性能优化,在此做一些总结。本篇主要是讲ES在ELK架构中作为日志存储时的性能优化方案。随着接入ELK的
JVM性能调优-G1 参考知识1本篇是对Java官网G1收集器调优的精简版。针对G1垃圾的收集阶段可能出现的问题,非合理内存分配,大对象占用,FullGC等问题作出解决方式和操作参数。G1是一个吞吐量和时间延迟之间相互平衡
什么时候才用的到jvm调优,为什么要调优,有人能指教一下吗 JVM是最好的软件工程之一,它为Java提供了坚实的基础,许多流行语言如Kotlin、Scala、Clojure、Groovy都使用JVM作为运行基础。一个专业的Java工程师必须要了解并掌握JVM,
tomcat 性能调优 参考知识1java性能优化原则:代码运算性能内存回收应用配置(影响java程序注意原因是垃圾回收)代码层优化:避免过多的循环嵌套调用和复杂逻辑Tomcat调优主要内容1.增加最大连接数2.调整工作模式
jvm性能调优都做了啥 JVM是最好的软件工程之一,它为Java提供了坚实的基础,许多流行语言如Kotlin、Scala、Clojure、Groovy都使用JVM作为运行基础。一个专业的Java工程师必须要了解并掌握JVM,
Spark性能调优篇七之JVM相关参数调整 参考知识1        由于Spark程序是运行在JVM基础之上的,所以我们这一篇来讨论一下关于JVM的一些优化操作。
JVM性能调优指南(一) 参考知识1-help-server-client-version-showversion-cp-classpath调整为完全解释执行编译模式:调整为编译执行编译模式:最后一行的mixedmode表明J
es性能调优 参考知识1elk上线所有应用后,发现日志有延迟现象,少则延迟几分钟,多则延迟半个多小时,查看kafka,发现有大量的消息堆积,于是,我就多增加了几台logstash的机器来消费日志,但是经过观察后,日