/** * * JVM参数调优: * 查看某个正在运行程序jvm某个参数是否开启布尔型参数: jinfo -flag 配置项 进程编号 * Idea-terminal:1 jps -l (获得进程编号) 2 jinfo -flag PrintGCDetails 进程编号 3+表示开启 -表示未开启 * * 查看个正在运行程序jvm参数:jinfo -flags 进程编号 * Idea-terminal:1 jps -l (获得进程编号) 2 jinfo -flags 进程编号 * * IDEA: RUN--EDIT CONFIGURATIONS--APPLICATION:HelloGC--CONFIGURATIONS:VM OPTIONS 设置为 -Xms1024 -Xmx1024 -XX:+UseParallelGC * -Xms -Xmx 是XX参数,等同于-XX:InitialHeapSize -XX:MaxHeapSize * * * * * JVM参数查看: * 1 java -XX:+PrintFlagsInitial -version * 如何查看jvm初始参数设置: * Idea-terminal:java -XX:+PrintFlagsInitial -version * 2 java -XX:+PrintFlagsFinal -version * 如何查看jvm修改后参数设置: * Idea-terminal:java -XX:+PrintFlagsFinal -version (“=”表示jvm默认加载的;前面有“:=”表示加载时jvm或者人为改过了。) *cmd运行java命令的同时打印出参数公式: * cmd至java文件目录输入:java -XX:+PrintFlagsFinal -Xss128k T (T表示运行的java类名字,表示运行java程序的同时,初始化Xss为128k,并打印出修改后的参数列表) * *3 java -XX:+PrintCommandLineFlags -version * 如何查看默认的垃圾收集器: * Idea-terminal:java -XX:+PrintCommandLineFlags -version * * * * *java程序中打印java虚拟机内存总量: Runtime.getRuntime().totalMemory() 默认机器内存的1/64 *java程序中打印java虚拟机试图使用的最大内存量:Runtime.getRuntime().maxMemory() 默认机器内存的1/4 * * *jvm常用参数: * 1-Xms:初始大小内存,默认物理内存的1/64 等价-XX:InitialHeapSize * * 2-Xmx:最大分配内存,默认物理内存的1/4 等同-XX:MaxHeapSize * * 3-Xss:设置单个线程栈的大小,一般默认512k-1024k 等价-XX:TreadStackSize 查看时为0,因为windows这个默认值跟虚拟机内存有关。Linux(64bit)为1024; * * 4-Xmn:设置年轻代大小,一般默认堆空间1/3,一般不调。eden8/10.from1/10.old1/10 * * 5-XX:MetaspaceSize:元空间 元空间的本质跟永久代类似,都是对jvm方法区的实现,区别是元空间用的是本地内存,永久代用的是jvm内存。默认情况下元空间大小受本地内存限制。但实际情况是默认21MB * -Xms10m -Xmx10m -XX:MetaspaceSize=1024m -XX:+PrintFlagsFinal * * 6-XX:PrintGCDetails:输出详细GC收集日志;GC规律如图;FULL GC规律: 名称:GC前内存占用->GC后内存占用(该区域内存的总大小) * * 7-XX:SurvivorRatio:设置新生代eden和S0/S1空间的比列。默认:-XX:SurvivorRatio=8,eden:s0:s1=8:1:1 如果-XX:SurvivorRatio=4,则eden:s0:s1=4:1:1 * * 8-XX:NewRatio:配置young和old在堆内存的占比,默认=2,young占1/3,young/old=1/2,-XX:NewRatio=4,则young占1/5,young/old=1/4 * * 9-XX:MaxTenuringThreshold:old区最大吞吐量,就是垃圾最大年龄,进入老年代年龄,默认15,值域1-15.值越大,进去old的条件越高,触发FULL GC的条件越高。如果为0,则eden不进入survivor区,直接进old。 * * */
JVM 参数 调优
最新推荐文章于 2024-08-16 17:26:15 发布