jvm参数配置

来源:互联网 发布:数据埋点 编辑:程序博客网 时间:2024/06/05 16:42

Trace跟踪参数配置
-verbose:gc 显示虚拟机发生内存回收的信息稳定版本 -XX:+PrintGC显示虚拟机发生内存回收的信息非稳定版本 
  1. [GC 1016K->776K(131072K), 0.0011560 secs]
        每行开始首先是GC的类型(可以是“GC”或者“Full GC”),然后是在GC之前和GC之后已使用的堆空间,再然后是当前的堆容量,最后是GC持续的时间(以秒计)。
        举例:GC将已使用的堆空间从1016K减少到776K,当前的堆容量(GC发生时)是131072K,GC持续的时间是0.0011560秒。

-XX:+PrintGCDetails打印GC详细信息 -XX:+PrintGCTimeStamps打印GC发生的时间戳 -Xloggc  缺省的GC日志是输出到终端的,使用-Xloggc:也可以输出到指定的文件。 
        例 -Xloggc:log/gc.log  需要注意这个参数隐式的设置了参数-XX:+PrintGC和-XX:+PrintGCTimeStamps,但为了以防在新版本的JVM中有任何变化,我仍建议显示的设置这些参数。

-XX:+PrintHeapAtGC每次GC后,都打印堆的信息-XX:+TraceClassLoading监控类的加载-verbose显示虚拟机的运行情况

堆的参数配置
参数名称含义默认值 -Xms初始堆大小物理内存的1/64(<1GB)用来设置程序初始化的时候内存栈的大小,增加这个值的话你的程序的启动性能会得到提高。-Xmx指定最大堆物理内存的1/4(<1GB)空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制。-Xmn设置新生代大小Sun官方推荐配置为整个堆的3/8增大年轻代后,将会减小年老代大小.此值对系统性能影响较大。
这是一个绝对值数;
-XX:NewSize设置新生代大小 这是一个比例值;
4 表示新生代:老年代=1:4  
即年轻代占整个对的1/5;-XX:SurvivorRatio设置两个Survivor区和eden的比幸存代占新生代的1/108表示 两个Survivor :eden=2:8,即一个Survivor占年轻代的1/10-XX:+HeapDumpOnOutOfMemoryError
OOM时导出堆到文件  -XX:+HeapDumpPath导出OOM的路径 -Xmx20m -Xms5m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=d:/a.dump-XX:PermSize设置永久区的初始空间  -XX:MaxPermSize设置永久区的最大空间  

栈的参数配置
栈是每个线程开启的时候都会分配一个空间,所以它通常只有几百K,不会很大。栈空间是和所能容纳的线程数量成反比,栈空间分配的大了,所能容纳的线程数量就少了。