JVM 可视化工具 之 Java VisualVM
本文主要介绍JVM的可视化工具:jvisualvm。
基础知识
###JVM参数
Linux系统,使用man java查看JVM参数
参数 | 含义 |默认值|样例
-------- | —|
-Xms | 堆的初始Size | 物理内存的1/64|-Xms128m
-Xmx | 堆的最大Size,在生产环境,通常与-Xms设置成相同的值 | 物理内存的1/4|-Xmx128m
-Xmn |年轻代的初始Size和最大Size(Eden+From Survior + To Survivor ) | -Xmn256m
-Xss|线程的堆栈大小|-Xss1m
-XX:NewSize=size | 年轻代的初始size | -XX:NewSize=256m
-XX:MaxNewSize=size | 年轻代的最大size | -XX:MaxNewSize=256m
-XX:NewRatio=ration|年轻代(包括Eden和两个Survivor区)和老年代的比值|2|-XX:NewRatio=4表示年轻代和年老代的占比是1:4,年轻代占整个堆的1/5。设置-Xms、-Xmx与-Xmn时,该参数不需要设置
-XX:SurvivorRatio|Eden区与Survivor区的比值|8|
-Xloggc:filename|Sets the file to which verbose GC events information should be redirected for logging.|-Xloggc:garbage-collection.log
java -Xmx20m -Xms20m -XX:+HeapDumpOnOutOfMemoryError JavaHeapTest
1 public class JavaHeapTest{
2 public final static int MAX_SIZE = 2000000000;
3
4 private String oom;
5
6 private int length;
7
8 StringBuffer tempOOM = new StringBuffer();
9
10 public JavaHeapTest(int length){
11 this.length = length;
12
13 int i = 0;
14 while(i < length){
15 i++;
16
17 try{
18 tempOOM.append("a");
19
20 }catch(OutOfMemoryError e){
21 e.printStackTrace();
22 break;
23
24 }
25
26 }
27
28 this.oom = tempOOM.toString();
29
30 }
31
32
33 public String getOom(){
34 return oom;
35 }
36
37 public int getLength(){
38 return length;
39 }
40
41 public static void main(String args[]){
42 try{
43