“-Xmx1024m -Xms1024m -Xmn512m -Xss256k”——Java运行参数(转)
JVM的堆的内存, 是通过下面面两个参数控制的
-Xms 最小堆的大小, 也就是当你的虚拟机启动后, 就会分配这么大的堆内存给你
-Xmx 是最大堆的大小
当最小堆占满后,会尝试进行GC,如果GC之后还不能得到足够的内存(GC未必会收集到所有当前可用内存),分配新的对象,那么就会扩展堆,如果-Xmx设置的太小,扩展堆就会失败,导致OutOfMemoryError错误提示。
实际上,细节不止于此, 堆还会被分成几个不同的区域,分别应用不同的GC算法
google到了一篇博文,贴出来,漫漫看:http://unixboy.javaeye.com/blog/174173
减少JAVA GC:https://www.cnblogs.com/zxf330301/p/5366404.html
jvm自带:jvisualvm
dump文件copy:
scp root@sh-nh-b2-XXXX:/var/log/jstack/barrage-service_20200402224114465725715.dmp ./
scp root@114.80.XX:./barrage-service_20200402224114465725715.dmp /Users/xmly/Documents
jvm参数以及清理算法图解:https://www.cnblogs.com/andy-zhou/p/5327288.html
调整jvisualvm内存使用大小:/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/lib/visualvm/etc/visualvm.conf
JVM调优堆栈dump分析工具:https://www.iteye.com/blog/pengjiaheng-552456
服务启动配置:
-Djava.util.logging.config.file=/usr/local/webserver/XXXe/conf/logging.properties;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-XX:MetaspaceSize=256M;-XX:MaxMetaspaceSize=256M;-Xms5g;-Xmx5g;-Xmn2g;-Xss256k;-XX:SurvivorRatio=8;-XX:MaxTenuringThreshold=8;-XX:ParallelGCThreads=8;-XX:+UseConcMarkSweepGC;-XX:+UseParNewGC;-XX:+DisableExplicitGC;-XX:+CMSParallelRemarkEnabled;-XX:+CMSClassUnloadingEnabled;-XX:CMSInitiatingOccupancyFraction=70;-XX:CMSFullGCsBeforeCompaction=5;-XX:+UseCMSCompactAtFullCollection;-XX:+CMSScavengeBeforeRemark;-XX:+HeapDumpOnOutOfMemoryError;-Xloggc:/var/log/barrage-service/gc.log;-XX:+UseGCLogFileRotation;-XX:NumberOfGCLogFiles=10;-XX:GCLogFileSize=10M;-XX:+PrintGCDetails;-XX:+PrintGCDateStamps;-XX:+PrintGCApplicationStoppedTime;-XX:+PrintGCApplicationConcurrentTime;-Dcom.sun.management.jmxremote.password.file=/usr/local/webserver/b-service/conf/jmxremote.password;-Dcom.sun.management.jmxremote.access.file=/usr/local/webserver/b-service/conf/jmxremote.access;-Dcom.sun.management.jmxremote.ssl=false;-XX:+CMSConcurrentMTEnabled;-XX:+ExplicitGCInvokesConcurrent;-XX:HeapDumpPath=/usr/local/webserver/b-service/logs/barrage-service.hprof;-javaagent:/opt/jars/aspectjweaver-1.8.9.jar;-Djava.security.egd=file:/dev/./urandom;-XX:+AlwaysPreTouch;-XX:-UseBiasedLocking;-Djdk.tls.ephemeralDHKeySize=2048;-Djava.protocol.handler.pkgs=org.apache.catalina.webresources;-Djava.endorsed.dirs=/usr/local/webserver/b-service/endorsed;-Dcatalina.base=/usr/local/webserver/b-service;-Dcatalina.home=/usr/local/webserver/b-service;-Djava.io.tmpdir=/usr/local/webserver/b-service/temp;
JVM调优总结 -Xms -Xmx -Xmn -Xss
堆大小设置
JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。
典型设置:
java -Xmx3550m -Xms3550m -Xmn2g -Xss128k
-Xmx3550m:设置JVM最大可用内存为3550M。
-Xms3550m:设置JVM促使内