idea里Jvm调优

1、目的

使用较小的内存占用来获得较高的吞吐量或者较低的延迟。

程序在上线前的测试或运行中有时会出现一些大大小小的JVM问题,比如cpu load过高、请求延迟、tps降低等,甚至出现内存泄漏(每次垃圾收集使用的时间越来越长,垃圾收集频率越来越高,每次垃圾收集清理掉的垃圾数据越来越少)、内存溢出导致系统崩溃,因此需要对JVM进行调优,使得程序在正常运行的前提下,获得更高的用户体验和运行效率。

这里有几个比较重要的指标:

  • 内存占用:程序正常运行需要的内存大小。
  • 延迟:由于垃圾收集而引起的程序停顿时间。
  • 吞吐量:用户程序运行时间占用户程序和垃圾收集占用总时间的比值

2、怎么用

打开idea,点击Edit Configuration

image-20210828215024985

点击Modify options会弹出一个页面,选择Add Vm options,会出现下面的页面

image-20210828214513335

在下面画红线的地方设置自己需要的参数

image-20210828214847037

3、Jvm调优常用参数

参数说明实例
-Xms初始堆大小,默认物理内存的1/64-Xms512M
-Xmx最大堆大小,默认物理内存的1/4-Xms2G
-Xmn新生代内存大小,官方推荐为整个堆的3/8-Xmn512M
-Xss线程堆栈大小,jdk1.5及之后默认1M,之前默认256k-Xss512k
-XX:NewRatio=n设置新生代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4-XX:NewRatio=3
-XX:SurvivorRatio=n年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:8,表示Eden:Survivor=8:1:1,一个Survivor区占整个年轻代的1/8-XX:SurvivorRatio=8
-XX:PermSize=n永久代初始值,默认为物理内存的1/64-XX:PermSize=128M
-XX:MaxPermSize=n永久代最大值,默认为物理内存的1/4-XX:MaxPermSize=256M
-verbose:class在控制台打印类加载信息
-verbose:gc在控制台打印垃圾回收日志
-XX:+PrintGC打印GC日志,内容简单
-XX:+PrintGCDetails打印GC日志,内容详细
-XX:+PrintGCDateStamps在GC日志中添加时间戳
-Xloggc:filename指定gc日志路径-Xloggc:/data/jvm/gc.log
-XX:+UseSerialGC年轻代设置串行收集器Serial
-XX:+UseParallelGC年轻代设置并行收集器Parallel Scavenge
-XX:ParallelGCThreads=n设置Parallel Scavenge收集时使用的CPU数。并行收集线程数。-XX:ParallelGCThreads=4
-XX:MaxGCPauseMillis=n设置Parallel Scavenge回收的最大时间(毫秒)-XX:MaxGCPauseMillis=100
-XX:GCTimeRatio=n设置Parallel Scavenge垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)-XX:GCTimeRatio=19
-XX:+UseParallelOldGC设置老年代为并行收集器ParallelOld收集器
-XX:+UseConcMarkSweepGC设置老年代并发收集器CMS
-XX:+CMSIncrementalMode设置CMS收集器为增量模式,适用于单CPU情况。
后端专属技术群
构建高质量的技术交流社群,欢迎从事编程开发、技术招聘HR进群,也欢迎大家分享自己公司的内推信息,相互帮助,一起进步!
文明发言,以交流技术、职位内推、行业探讨为主
广告人士勿入,切勿轻信私聊,防止被骗

图片

关注公众号,拉你进群
| |
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,你可以使用 JVisualVM 工具来监视 JVM 的性能和资源使用情况。以下是一些常见的 JVM 调优技巧: 1. 调整堆大小:通过调整堆大小来改善垃圾回收性能。可以使用 -Xms 和 -Xmx 参数来设置初始堆大小和最大堆大小。 2. 选择适当的垃圾收集器:根据应用程序的性质和硬件配置选择合适的垃圾收集器。例如,对于大型内存的应用程序,可以考虑使用 G1 垃圾收集器。 3. 调整垃圾回收参数:可以通过调整垃圾回收参数来优化垃圾回收性能。例如,可以使用 -XX:+UseConcMarkSweepGC 参数来开启 CMS 垃圾回收器。 4. 启用并行处理:可以通过启用并行处理来提高应用程序的吞吐量。例如,可以使用 -XX:+UseParallelGC 参数来开启并行垃圾回收器。 5. 减少对象创建:减少对象的创建可以降低垃圾回收的频率和成本。可以通过使用对象池或重用对象等方法来减少对象的创建。 6. 关闭不必要的日志:关闭不必要的日志可以降低应用程序的 I/O 负载和内存占用。可以通过修改日志的级别或关闭不必要的日志来实现。 7. 使用合适的数据结构:使用合适的数据结构可以提高应用程序的性能。例如,使用 HashMap 而不是 ArrayList 可以提高查找和插入操作的性能。 这些技巧只是 JVM 调优的一部分,具体的调优策略需要根据应用程序的性质和硬件配置进行选择。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值