Java8的元空间:
Java8中,永久区(java7)PermGen被移除,被一个称为元空间的区域所取代,元空间本质和永久区类似,都是对JVM规范中方法区的实现,他们之间的最大区别在于:永久区使用的是JVM的堆内存,而元空间并不在虚拟机中,他使用的是本机物理内存。 因此默认情况下,元空间大小仅受本地内存限制。
JVM常用参数:
-Xms:初始内存大小,默认物理内存1/64,等价于-XX:InitialHeapSize
-Xmx:最大分配内存,默认物理内存1/4,等价于-XX:MaxHeapSize
-Xss:设置单个线程栈的大小,等价于-XX:ThreadStackSize
E:ideaProjectsmq>jinfo -flag ThreadStackSize 12360 #查看运行程序的栈大小
-XX:ThreadStackSize=0 #0表示使用默认值
-Xmn:设置年轻代大小,
-XX:MetaspaceSize:设置元空间大小
例如:java -Xms128m -Xmx4096m -Xss1024 -XX:Metaspacesize=512m -XX:+PrintCommandLineFlags -XX:+PrintGCDetails -XX:+UseSerialGC HelloGC
-XX:+PrintGCDetails 打印GC收集细节 GC/FullGC 名称:GC前内存占有->GC后内存占用(该区内存总大小)
-XX:SurvivorRatio:设置新生代中eden和s0/s1空间的比例,例如:-XX:SurvivorRatio=4 表示4:1:1,默认8:1:1
-XX:NewRatio:设置老年代的占比,剩下的1给新生代。例如:-XX:NewRatio=4,表示新生代:老年代=1:4,年轻代占整个堆的1/5
-XX:MaxTenuringThreshold 设置s0和s1复制的年龄最大年龄,要在0-15之间
https://img2018.cnblogs.com/blog/987988/201908/987988-20190828143007013-1083797672.png