JVM的配置,最常用的两个配置就是:
-Xms512m
–Xmx1024m
-Xms设置JVM的初始化内存大小,-Xmx为最大内存大小,当突破这个值,将会报内存溢出,导致的原因有很多,主要是虚拟机的回收问题以及程序设计上的内
存泄露问题;由于在超过-Xms时会产生页面申请的开销,所以一般很多应用服务器会推荐-Xms和-Xmx是等值的;最大值一般不保持在主机内存的75%的内存
左右(多个SERVER是加起来的内存),当JVM绝大部分时间处于回收状态,并且内存长时间处于非常长少的状态就会报:java.lang.OutOfMemoryError:Java
heap space的错误。
JVM内存配置分两大类:
1、-X开头的参数信息:一般每个版本变化不大。
2、-XX开头的参数信息:版本升级变化较大,如果没有太大必要保持默认即可
3、另外还有一个特殊的选项就是-server还是-client,他们在默认配置内存上有一些细微的区别,直接用JDK运行程序默认是-client,应用服务器生产模式一般
只会用-server。
1、-X开头的常用配置信息:
-Xnoclassgc 禁用垃圾回收,一般不适用这个参数
-Xincgc 启用增量垃圾回收
-Xmn1024K Eden区初始化JAVA堆的尺寸,默认值640K
-Xms512m JAVA堆初始化尺寸,默认是32M
-Xmx512m JAVA堆最大尺寸,默认64M,一般不超过2G,在64位机上,使用64位的JVM,需要操作系统进行unlimited方可设置到2G以上。
2、-XX开头常用内存配置信息:
-XX:-DisableExplicitGC 忽略手动调用GC的代码,如:System.gc(),将-DisableExplicitGC, 改成+DisableExplicitGC即为启用,默认为启用
-XX:+UseParallelGC 启用并行回收,多CPU有效,默认是不启用。
-XX:+UseParNewGC 启用并行收集(不是回收),也是多CPU有效。
-XX:NewSize=128m 新域的初始化尺寸。
-XX:MaxNewSize=128m 新创建的对象都是在Eden中,在-client中默认为640K,而-server中默认是2M
-XX:PerSize=64m 设置永久域的初始化大小,在WEBLOGIC中默认的尺寸应该是48M,一般够用,可以根据实际情况作相应条调整
-XX:MaxPerSize=64m 设置永久域的最大尺寸
另外还可以设置按照区域的比例进行设置操作,以及设置线程、缓存、页面大小等等操作。
3、-XX开头的几个监控信息:
-XX:+GITime 显示有多少时间花在编译代码代码上,这部分为运行时编译为对应机器码时间
-XX:+PrintGC 打印垃圾回收的基本信息
-XX:+PrintGCTimeStamps 打印垃圾回收时间戳信息
-XX:+PrintGCDetails 打印垃圾回收的详细信息
-XX:+TraceClassLoading 跟踪类的加载
-XX:+TraceClassResolution 跟踪常量池
-XX:+TraceClassUnLoading 跟踪类卸载