虚拟机参数调优

前段时间又看了一遍《深入理解Java虚拟机》,感觉比以前看的理解程度多了一些。找一些以前的关于虚拟机参数的笔记内容写下来。虚拟机有很多种,一般应用的都是HotSpot虚拟机,所以大家讨论的也都是针对这款虚拟机。不同的虚拟机实现是不一样的。运行时会根据热点程序,进行不同程度的优化编译,不是编译一次就完事的。高级编译时会引入大胆的优化策略,也会留逃生门。一,注意事项虚拟机在64位机器上,内存大于32G...
摘要由CSDN通过智能技术生成

前段时间又看了一遍《深入理解Java虚拟机》,感觉比以前看的理解程度多了一些。找一些以前的关于虚拟机参数的笔记内容写下来。

虚拟机有很多种,一般应用的都是HotSpot虚拟机,所以大家讨论的也都是针对这款虚拟机。不同的虚拟机实现是不一样的。

运行时会根据热点程序,进行不同程度的优化编译,不是编译一次就完事的。高级编译时会引入大胆的优化策略,也会留逃生门。

一,注意事项

  • 虚拟机在64位机器上,内存大于32G时,会放弃指针压缩,导致内存很大浪费,所以内存最好控制在4-32G。
  • 使用Jinfo观察运行时的所有参数;
  • jstack查看线程信息;jmap生成dump文件;jstat观察运行时的类加载、编译、回收内容。
  • 使用MAT可视化分析线上Dump文件。由于文件一般比较大,所以分析时比较耗内存,也比较慢。
  • 出现内存溢出的问题时,仔细看一下报错内容,在不同区域内存报错的类型或提示是不一样的。

二,垃圾收集器

  • 目前HotSpot使用的是分代收集法。相关策略有Serial、ParNew、Parallel、CMS、G1等等。
  • NewRatio参数设置新生代和老生代的内存比例。
  • 新生代Eden和Survivor的默认比例是8:1,即SurvivorRatio为1。
  • Windows和Linux(CPU只有一个核)时,JVM默认运行的模式是Client,此时默认的收集器是Serial;在Linux多核时默认运行的模式是Server,收集器使用的是Parallel。
  • 可通过-XX:Use***GC来修改收集器类型,
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值