堆栈参数调整(基于 Sun Hotspot )
-Xss<size>:设置任何线程的本地方法栈大小
-Xms<size>:设置JVM初始堆大小
-Xmx<size>:设置JVM最大堆大小
-XX:PermSize=<value>:设置JVM Perm generation的初始大小
-XX:MaxPermSize=<value>:设置JVM Perm Generation的最大大小
注意:所有以-X开头的JVM参数都不是标准参数(未包含在JVM规范中),即可能不会被所有版本的JVM实现;以-XX开头的JVM参数可能指定了特定的系统平台,且可能在没有通知的情况下更改,因此不推荐使用。
1. 通过jdk5 自带的JConsole查看是否有memory leak
1.1 先以下面的方式启动需要调优的目标程序JVM
cd C:\Program Files\Java\jdk1.6.0_21\demo\jfc\SwingSet2
java -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=localhost -jar SwingSet2.jar
1.2 打开JConsole(JDK5)/JVisualVM(JDK6)以本地进程方式连接目标进程.查看memory, classes, thread,CPU情况。
注意在我Vista机器上 必须加上 -Djava.rmi.server.hostname=localhost 才能连接,否则报“连接失败,是否重试”的错误。
2. 查看heap中的主要对象,用jmap
可以查看histogram
3. 查看对象的reachable
jhat