微服务之JVM调优

Posted 石工记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微服务之JVM调优相关的知识,希望对你有一定的参考价值。

一、Xms Xmx Xss等定义及功能 

1.Xms 是指设定程序启动时占用内存大小。一般来讲,大点,程序会启动的快一点,但是也可能会导致机器暂时间变慢。

2.Xmx 是指设定程序运行期间最大可占用的内存大小。如果程序运行需要占用更多的内存,超出了这个设置值,就会抛出OutOfMemory异常。

3.Xss 是指设定每个线程的堆栈大小。这个就要依据你的程序,看一个线程大约需要占用多少内存,可能会有多少线程同时运行等。

以上三个参数的设置都是默认以Byte为单位的,也可以在数字后面添加[k/K]或者[m/M]来表示KB或者MB。而且,超过机器本身的内存大小也是不可以的,否则就等着机器变慢而不是程序变慢了。

-Xms 为jvm启动时分配的内存,比如-Xms200m,表示分配200M
-Xmx 为jvm运行过程中分配的最大内存,比如-Xms500m,表示jvm进程最多只能够占用500M内存
-Xss 为jvm启动的每个线程分配的内存大小,默认JDK1.7中是256K,JDK1.8+中是1M



上面的表格只是大致的估计了下在特定内存条件下可以在java中创建的最大线程数。随着-Xmx的加大,空闲的内存数就更少,那么可以创建的线程也就更少,同时在JDK1.7和1.8版本不同下,可创建的线程数也会根据每个线程的内存大小不同而不同。

      其实只要我们了解了JVM的内存大小指定以及java中线程的内存模型,基本上我们就可以很好的控制如何在java中使用线程和避免内存

以上是关于微服务之JVM调优的主要内容,如果未能解决你的问题,请参考以下文章

微服务之JVM调优

48 张图 | 实战详解微服务性能监控Jmeter压测JVM调优

jvm 性能调优工具之 jinfo命令详解

JVM实战系列「监控调优体系」实战开发arthas-spring-boot-starter监控你的微服务是否健康!

JVM实战系列「监控调优体系」实战开发arthas-spring-boot-starter监控你的微服务是否健康

JVM调优 快速定位服务CPU过高(理论+实战)