Java虚拟机常用参数

前言

再笔试以及日常的开发工作中,我们多少会用到一些问题,而解决问题的根本就是寻找问题的根源,在这里我将日常使用的性能监测工具以及虚拟机用到的调优参数罗列出来,希望对大家有所帮助。

性能监控常用工具

  1. javap:将class文件返汇编为我们可读格式的工具,默认打印所有非私有的字段和方法,-p 私有的也打印 - v打印所有信息,如果只是查看字节码-c,Code ToolsASM
  2. VisualVM
  3. JConsole
  4. JProfiler
  5. YourKit

JVM常用参数

  1. Xss:设置线程vm stack的大小,如果超过vm规定报stackoverflowerror,栈帧越大,深度越小,深度指栈帧的个数,例如 java -Xss5m 
  2. Xms & Xmx
  • Xmx:-Xmx用来设置应用程序(不是JVM)能够使用的最大内存数
  • Xms:-Xms用来设置程序初始化的时候内存栈的大小
  1. 直接内存:堆外内存,引用 放入堆中(可以避免java堆和native堆的数据复制),参数MaxDirectMemorySize 指定
  2. TLAB(本地线程分配缓存)
  3. Thread local Allocation buffer,线程在堆上的对象内存分配采用不同的线程拥有单独的小块内存,需要进行TLAB增加时,同步锁定,是否使用TLAB由参数-XX:+/-UseTLAB设定
  4. 最大方法区容量:MaxPermSize
  5. 配置是否对方法区中的类信息进行回收:-Xnoclassgc
  6. 垃圾收集器中参数
  • Serial & ParNew:-XX:SurvivorRatio -XX:PretenureSizeThreshold -XX:HandlePromotionFailure
  • 使用CMS收集器:-XX:+UseConcMarkSweepGC作为老年代,则新生代只能选择Serial 或者parnew
  • ParNew是Serial的多线程版,一般线程数和cpu核数相同,通过-XX:ParallelGCThreads限制
  • SurvivorRatio:新生代中Eden区域与Survivor区域的容量比值,默认为8
  • PretenureSizeThreshold:直接进入老年代的大小,对象大于这个值,直接进入老年代(避免发生大量的内存复制)
  • UseAdaptiveSizePolicy:动态调整Java堆中各个区域的大小,以及进入老年代的年龄
  • -XX:+PrintGCDetails:发生收集行为时打印收集日志
  • -XX:MaxTenuringThreshold:设置对象进入老年代的年龄
  • HandlePromotionFailure,设置空间担保true or false
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值