1.指令
1.jps命令用於查詢正在運行的JVM進程。
2.jstat可以實時顯示本地或者遠程JVM進程中類的裝載、內存、垃圾收集、JIT編譯等數據。
3.jinfo用於查詢當前運行的JVM的屬性和參數值。
4.jmap用於顯示當前Java堆和永久代的詳細信息。
5.jhat用於分析使用jmap生成的dump文件,是JDK自帶的工具。
6.jstack用於生成當前JVM所有線程的快照,線程快照是JVM每一個線程正在執行的方法,目的是定位出線程出現長時間停頓的原因。
2.參數
1.-Xmx:用於指定Java程序的最大堆內存,使用java -Xmx5000M -version判斷當前系統能分配的最大堆內存。
2.-Xms:指定最小堆內存,通常設置成跟最大堆內存一樣,減少GC。
3.-Xmn:設置新生代大小。整個堆內存 = 新生代內存 + 老年代內存,此值對系統性能影響較大,Sun官方推薦設置爲堆的3/8。
4.-Xss:指定線程的最大棧空間。該參數決定了java函數調用的深度,值越大調用深度越深,若值太小,容易發生棧溢出錯誤。
5.-XX:PermSize :指定方法區(永久區)的初始值,默認是物理內存的1/64,Java8永久區移除之後,取而代之的是元數據區,由-XX:MetaspaceSize指定。
6.-XX:MaxPermSize :指定方法區(永久區)的最大值,默認是物理內存的1/4,Java8永久區移除之後,取而代之的是元數據區,由-XX:MaxMetaspaceSize指定。
7.-XX:NewRatio=n:老年代和新生代比值,n=2時,說明老年代和新生代的比值爲2:1。
8.-XX:SurvivorRatio=n:Eden區和Survivor區的比值。n=8時,說明Eden和Survivor比值爲8:1:1,因爲Survivor有兩個(from,to)。
參考文章:https://juejin.im/post/5e5c5c52f265da575f4e7558#heading-187