Linux 下jvm 一些参数的解释
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 在本地连接到远程服务器调试如下图所示: