Linux 下jvm 一些参数的解释

keycoding 2016-12-17

tomcat 的 catalina.sh  文件或 start.sh 参数解释

JAVA_OPTS=" -Xms6g -Xmx6g -Xmn2g -Xss128k -XX:PermSize=64m -XX:MaxPermSize=256m -XX:SurvivorRatio=6 -XX:ParallelGCThreads=8

-Djava.rmi.server.hostname=120.77.38.110 

-Dcom.sun.management.jmxremote.port=18999 

-Dcom.sun.management.jmxremote.ssl=false 

-Dcom.sun.management.jmxremote.authenticate=false

-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8080

-XX:-PrintGC -XX:-PrintGCDetails -XX:-PrintGCTimeStamps -Xloggc:logs/gc.log

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=logs/a.hprof"

-Xmx6g:设置JVM最大可用内存,默认值:物理内存的1/64,小于1G。

-Xms6g:设置JVM初始内存,此值可以设置与 -Xmx 相同,以避免每次垃圾回收完成后JVM重新分配内存。默认值:物理内存的1/64,小于1G。一般为机器最大内存的一半左右。

-Xmn2g:设置年轻代大小,默认值:物理内存的1/64,小于1G。整个堆的大小=年轻代大小+年老代大小,堆的大小不包含持久代大小,如果增大了年轻代,年老代相应就会减小,官方默认的配置为年老代大小/年轻代大小=2/1左右(使用-XX:NewRatio可以设置-XX:NewRatio=5,表示年老代/年轻代=5/1);此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。一般-Xmn的大小是-Xms的1/3。

-Xss:设置较小的线程栈以支持创建更多的线程,支持海量访问,并提升系统性能。

-XX:PermSize:设置持久代初始值。默认值:物理内存的1/64。

-XX:MaxPermSize=256m:设置持久代最大值。默认值:物理内存的1/64。

-XX:SurvivorRatio=6 设置年轻代中Eden区与Survivor区的比值。系统默认是8,根据经验设置为6,则2个Survivor区与1个Eden区的比值为2:6,一个Survivor区占整个年轻代的1/8。

-XX:ParallelGCThreads=8 配置并行收集器的线程数,即同时8个线程一起进行垃圾回收。此值一般配置为与CPU数目相等。

1. -Djava.rmi.server.hostname:这个是配置 server 的 IP 的

2. -Dcom.sun.management.jmxremote.port:这个是配置远程 connection 的端口号的,要确定这个端口没有被占用

3. -Dcom.sun.management.jmxremote.ssl=false 指定了 JMX 是否启用 ssl

4. -Dcom.sun.management.jmxremote.authenticate=false   指定了JMX 是否启用鉴权(需要用户名,密码鉴权)

配置这4个目的是远程监控 JVM 

Xdebug 告诉jvm运行在debug模式下 

Xrunjdwp transport 指定连接方式(包括socket传输和内存传输两种,其中内存传输只支持windows,而且内存传输不支持远程调试) 
address 监听端口,以接收debug客户端发起的TCP连接。 
server =y 表示在remote debugging会话中作为服务端 

XX:-PrintGC 打印GC的信息

XX:HeapDumpPath  打印dump 文件

eclipse 在本地连接到远程服务器调试如下图所示:

相关推荐