JVM调优:JVM常用调优命令和参数

  JVM调优是调整和配置Java虚拟机(JVM)的过程,以便最大限度地提高应用程序的性能和效率。这涉及到调整内存设置、选择合适的垃圾收集器,以及配置各种性能参数。
今天我们来了解一下参数如何设置

JVM调优的重要性
1.通过调整JVM参数,可以减少延迟,提高应用的响应速度和吞吐量。
2.合理配置JVM参数可以使应用更有效地利用系统资源。
3.适当的调优可以减少系统崩溃的风险,提高应用的可靠性。

堆参数设置
-XX:+PrintGC:在每次垃圾收集发生时打印相关信息。
-XX:+UseSerialGC:配置使用串行回收器。
-Xms:设置JVM启动时初始化堆的大小。
-Xmx:设置JVM能获得的最大堆大小。
-XX:+PrintGCDetails:打印详细的垃圾收集日志,包括各个区的情况。
-XX:+PrintCommandLineFlags:输出传给虚拟机的隐式或显式参数。

-Xmx200m -Xms50m -XX:+PrintCommandLineFlags:可以将隐式或者显示传给虚拟机的参数输出

新生代参数配置
-Xmn:设置新生代的大小。
-XX:SurvivorRatio=:设置新生代中Eden空间与Survivor空间的比例。
-XX:NewRatio=:设置新生代和老年代的比例。

-Xms200m -Xmx200m -Xmn10m -XX:SurvivorRatio=2 -XX:+PrintGCDetails

堆溢出参数配置
-XX:+HeapDumpOnOutOfMemoryError:在内存溢出时导出整个堆信息。
-XX:HeapDumpPath= :设置导出堆的存放路径。

-Xms20m -Xmx200m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath = test.dump
//指定JVM的初始堆大小为20MB,JVM的最大堆大小为200MB,当JVM发生OutOfMemoryError错误时,自动生成堆转储文件(Heap Dump)。

栈参数配置
-Xss:指定线程的最大栈空间。

-Xss10m

MaxTenuringThreshold参数,可以指定新生代对象经过多少次回收后进入老年代。另外,大对象新生代eden区无法装入时,也会直接进入老年代。
JVM里有个参数可以设置对象的大小超过在指定的大小之后,直接晋升老年代。
-XX:PretenureSizeThreshold=15

-Xmx100M -Xms100M -XX:+UseSerialGC -XX:MaxTenuringThreshold=15 -XX:+PrintGCDetails

PretenureSizeThreshold参数,可以进行指定进入老年代的对象大小,但是要注意TLAB区域优先分配空间。虚拟机对于体积不大的对象 会优先把数据分配到TLAB区域中,因此就失去了在老年代分配的机会.

-Xmx100M -Xms100M -XX:+UseSerialGC -XX:+PrintGCDetails -XX:PretenureSizeThreshold=500 -XX:-UseTLAB

查看和调试参数

java -help:查看Java命令参数。
java -version:查看JVM版本。
java -XX:+PrintFlagsFinal -version:打印JVM运行参数。
jinfo -flags <pid>:查看Java进程的JVM参数。
jstat -gc <pid>:查看进程的GC信息。
jmap -heap <pid>:查看内存使用情况。

最后:
  JVM调优是一个多方面的过程,涉及不同层面的调整和配置。合理使用JVM调优参数,可以帮助我们更好地理解和优化Java应用程序的性能。具体参数与程序,并发情况等等都要关系,需要合理的测试与设置

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值