前言
其实听着JVM调优这个词有些高大上,但是等你真正了解了他的内在原理后,还是很容易的。再简单
JVM调优大致可分为如下:
- 解决JVM运行过程中的问题(主要就是内存溢出的问题)
- 优化JVM运行时的环境,提高运行速度与避免卡顿现象
- 根据我们程序的实际需求对JVM进行规划和与调优配置
- JVM的稳定性
调优原则
- 将机器的JVM参数设置到最优
- 一般的Java都不需要进行JVM优化
- 减少代码层面造成的GC问题(STW)
- 减少使用全局变量、大对象以及减少创建对象的数量
- 通过代码解决GC情况比优化JVM参数更好
- 架构和代码调优等级优先于JVM优化
保证服务的稳定,稳定的前提下提高性能,才是我们最终的目的!
JVM参数设置优化
堆栈设置参数: -Xss:每个线程的栈大小 -Xms:初始堆大小,默认为物理内存的的1/64 -Xmx:最大堆大小,默认为物理内存的1/4 -Xmn:新生代大小 -XX:NewRatio: 默认2代表新生代占是老年代的1/2,整个堆内存的1/3 -XX:SurvivorRatio:默认8代表一个survior区占用1/8的Eden内存,也就是1/10的新生代内存 -XX:MetaspaceSize:元空间大小 -XX:MaxMetaspaceSize:元空间最大允许大小,默认不受限制,JVM MaxMetaspace会自动扩展
java命令行工具
jps [ options ] [ hostid ]
// 没有指定 hostid,列出本机的JVMs
// jps通过Java启动器来查找main方法的类名和参数
[options] 参数
jps -l : 输出应用主类的完整包路径名称或者jar文件的全路径名称
jps -v : 输出对象进程的JVM的参数
jps -q : 禁止输出main方法的类或者jar文件的名称和参数
jps -m : 输出main方法的参数,JVM自带参数不会输出
好了,今天先讲到这吧,谢谢大家
欢迎大家关注我的工种昊《coder练习生》