1、JVM經常使用啓動參數工具
-Xms:設置堆的最小值。線程
-Xmx:設置堆的最大值。調試
-Xmn:設置新生代的大小。對象
-Xss:設置每一個線程的棧大小。進程
-XX:NewSize:設置新生代的初始值。內存
-XX:MaxNewSize:設置新生代的最大值。資源
-XX:PermSize:設置永久代的初始值。虛擬機
-XX:MaxPermSize:設置永久代的最大值。io
-XX:SurvivorRatio:年輕代中Eden區與Survivor區的大小比值。console
-XX:PretenureSizeThreshold:令大於這個設置值的對象直接在老年代分配。
2、經常使用內存調試工具
jps:查看虛擬機進程的情況,如進程ID.
jmap:用於生成堆轉儲快照文件(某一時刻的)。
jhat:對生成的堆轉儲快照文件進行分析。
jstack:用來生成線程快照(某一時刻的)。生成線程快照的目的是定位線程長時間停頓的緣由(死鎖、死循環、IO等),經過查看各個線程的調用堆棧,就能夠知道沒有響應的線程在後臺作了什麼或等什麼資源。
jstat:虛擬機統計信息監視工具。如顯示垃圾收集的狀況,內存使用的狀況。
Jconsole:主要是內存監控和線程監控。內存監控:能夠顯示內存的使用狀況。線程監控:遇到線程停頓時,能夠使用這個功能。