JVM调优时,常用的参数:
1、-Xms:最小堆值 -Xmx:最大堆值 (两个参数设置为一样可避免堆自动扩展);
2、-XX:+HeapDumpOnOutOfMemoryError:让虚拟机在出现内存溢出异常时Dump出当前的内存堆转存快照;
-XX:+PrintGCDetials:打印内存回收日志,在进程退出时输出当前内存各区域分配情况;
3、-Xss:栈内存容量;
4、-XX:PermSize:方法区大小 -XX:MaxPermSize:最大方法区大小;
5、-XX:MaxDirectMemorySize:最大本机直接内存;
6、-Xms20M -Xmx20M -Xmn10M:Java堆固定为20M,不可扩展,其中10M分配给新生代u,剩下的分给老年代;-XX:SurvivorRatio=8决定了新生代Eden区与一个Survivor区的空间比例是8:1;
7、-XX:PretenureSizeThreadhold:大于这个设置值的对象直接在老年代分配(只对Serial和ParNew收集器有效);
8、-XX:MaxTenuringThreadhoid:对象晋升老年代的年龄阈值
JVM调优时,使用的JDK命令行工具:
1、javac:编译Java程序
2、java:运行Java程序
3、jps:虚拟机进程状况工具(-q:输出本地虚拟机唯一id -l:输出主类全名)
4、jstat:虚拟机统计信息监视工具(-gc:监视Java堆状况,包括Eden区、两个survivor区、老年代、永久代;)
5、jinfo:Java配置信息工具(-flag:查看系统参数默认值)
6、jmap:Java内存映像工具,-dump用于生成堆转储快照
7、jhat:虚拟机堆转储快照分析工具,一般不用
8、jstack:Java堆栈跟踪工具,用于生成虚拟机当前时刻的线程快照
JVM调优时,使用的JDK可视化工具:
1、JConsole
2、VisualVM