jvm常用参数 对jdk7 jdk8

tomcat参数调整

set JAVA_OPTS= %JAVA_OPTS% -server -Xms256m -Xmx650m -XX:PermSize=128M -XX:MaxPermSize=256M -Xss256k -XX:+UseG1GC -Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8

或
set JAVA_OPTS= %JAVA_OPTS% -server -Xms256m -Xmx650m -XX:PermSize=128M -XX:MaxPermSize=256M -Xss256k -XX:+UseG1GC -Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8 -XX:ParallelGCThreads=10

或
set JAVA_OPTS= %JAVA_OPTS% -server -Xms2G -Xmx2G -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=500M -XX:+UseG1GC -Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8 -XX:ParallelGCThreads=10

-Xms256m
jvm初始堆内存大小 M大小写不敏感

-Xmx650m
jvm最大堆内存大小 M大小写不敏感

Java7:-XX:PermSize=256M
Java8:-XX:MetaspaceSize=256M
永久代/元空间/栈空间初始化内存分配大小 M大小写不敏感

Java7:-XX:MaxPermSize=256M
Java8:-XX:MaxMetaspaceSize=256M
永久代/元空间/栈空间最大内存分配大小 M大小写不敏感

参数介绍

-Xms 设置堆的最小空间大小。
-Xmx 设置堆的最大空间大小。
-Xmn: 设置新生代大小
-XX:NewSize 设置新生代最小空间大小。
-XX:MaxNewSize 设置新生代最大空间大小。
-XX:PermSize 设置永久代最小空间大小。
-XX:MaxPermSize 设置永久代最大空间大小。
-Xss 设置每个线程的堆栈大小
-XX:+UseParallelGC: 选择垃圾收集器为并行收集器。此配置仅对年轻代有效。即上述配置下,年轻代使用并发收集,而年老代仍旧使用串行收集。
-XX:ParallelGCThreads=20: 配置并行收集器的线程数,即:同时多少个线程一起进行垃圾回收。此值最好配置与处理器数目相等。

-Xms3550m: 设置JVM初始内存为3550m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
-Xmn2g: 设置年轻代大小为2G。整个堆大小=年轻代大小+年老代大小+持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。
此值对系统性能影响较大,官方推荐配置为整个堆的3/8。
-Xss128k: 设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大 小进行调整。
在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000 左右。

Tomcat监控

Linux下连接jmx

335行 CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=192.168.202.1 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremot
e.port=9999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
336行 # ----- Execute The Requested Command -----------------------------------------

当前服务器ip
-Djava.rmi.server.hostname=192.168.202.1

指定jmx的开启端
-Dcom.sun.management.jmxremote.port=9999
  • linux加到catalina.sh
    第一个行
# OS specific support.  $var _must_ be set to either true or false.
JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m"
cygwin=false

server.xml参数配置

<Connector port="8192" protocol="org.apache.coyote.http11.Http11Nio2Protocol"
               connectionTimeout="600000"
			   maxThreads="500"
			   minSpareThreads="20"
			   acceptCount="1000"
			   enableLookups="false"
			   maxPostSize="2000000"
			   URIEncoding="UTF-8"
               redirectPort="8443" />

用代码获取内存信息

获取jvm分配给当前应用的内存信息

System.out.printf("已完成%d页数据保存%n", currentPage);
long totalMM = Runtime.getRuntime().totalMemory() / 1024 / 1024;
long freeMM = Runtime.getRuntime().freeMemory() / 1024 / 1024;
long usedMM = totalMM - freeMM;
long maxMM = Runtime.getRuntime().maxMemory() / 1024 / 1024;
System.out.printf("内存信息: 最大%dM, 当前共%dM, 已使用%dM, 剩余%dM空闲%n", maxMM, totalMM, usedMM, freeMM);

你可能感兴趣的:(Java,jvm,java,tomcat)