常用JVM配置参数

Trace跟踪参数

1、打印GC的日志信息,命令如下
  • -verbose:gc
  • XX:+printGC
  • 打印GC的简要信息如下:
    在这里插入图片描述
    GC前用了4M,GC之后用374K,整个推占用15872K,耗时0.00016.6secs
2、打印GC详细信息
  • -XX: +PrintGCDetails
3、打印GC发生的时间戳
  • -XX: +PrintGCTimeStamps
    示例:
    在这里插入图片描述
    -XX:+PrintGCDetails程序执行后,输出以下堆信息:
    在这里插入图片描述
4、指定GC log的位置,以文件输出。
  • -XLoggc:log/gc.log
    在这里插入图片描述
5、每次GC前后,都打印堆信息
  • -XX:+PrintHeapAtGC
    在这里插入图片描述
6、监控类的加载
  • -XX:+TraceClassLoading
    在这里插入图片描述
7、打印类信息
  • XX:+PrintClassHistogram
    在这里插入图片描述
    [B:表示bytes数组。
    [C:表示char数组。

堆的分配参数

1、指定最大堆和最小堆
  • -Xmx -Xms
    示例:
    -Xmx20M -Xms5M 运行代码:
   System.out.print("Xmx=");
	    System.out.println(Runtime.getRuntime().maxMemory()/1024.0/1024.0+"M");
	    
	    System.out.print(" free mem=");
	    System.out.println(Runtime.getRuntime().freeMemory()/1024.0/1024.0+"M");
	    
	    System.out.print("total mem=");
	    System.out.println(Runtime.getRuntime().totalMemory()/1024.0/1024.0+"M");
Xmx=19.375M
 free mem=4.342750549316406M
total mem=4.875M

在这里插入图片描述
在分配了1M空间给byte数组,这时指定空间不变,可用空间少了1M,总空间不变。只要堆内存够用就不会进行扩展,java会尽可能维持在最小堆
在这里插入图片描述
分配空间超出之后,总空间变多。

2、设置新生代大小
  • -Xmn
  • (新生代主要保存一些生命周期短,对象内存小,垃圾回收比较频繁;老年代主要存放JVM认为生命周期长,内存相对较大,垃圾回收没那么频繁)
3、设置新生代和老年代的比值
  • -XX:NewRatio 值(2)
4、设置两个Survivor区和eden的比值
  • -XX:SurvivorRatio 值(2)
  • 年轻代分成1个Eden Space和2个Suvivor Space(命名为A和B)。当对象在堆创建时,将进入年轻代的Eden Space。

示例:
参数新生代设置1M,全部分配在老年代。
在这里插入图片描述
新生代设置15M,全部分配在新生代
在这里插入图片描述

设置新生代内存7寸,这时触发了两次GC
在这里插入图片描述
增大survivor内存空间
在这里插入图片描述

在这里插入图片描述

5、内存溢出(OOM)时导出堆到文件
  • -XX:+HeapDumpOnOutOfMemoryError
6、导出OOM的路径
  • -XX:+HeapDumpPath
  • 在这里插入图片描述
7、在内存溢出时(OOM),执行一个脚本
  • -XX:OnOutOfMemoryError
    在这里插入图片描述
8、总结
  • 官方推荐新生代占堆的3/8
  • 幸存代占新生代的1/10
  • 在OOM时,记得Dump出堆,确保可以排查现场问题。

永久区分配参数

1、设置永久区的初始空间和最大空间
  • -XX:PermSize -XX:MaxPermSize
  • 他们表示,一个系统可以容纳多少个类型

栈的分配参数

1、栈大小的分配
  • Xss
  • 通常只有几百K
  • 决定了函数调用的深度
  • 每个线程都有独立的栈空间
  • 局部变量、参数、分配在栈上
    在这里插入图片描述

Eclipse中参数设置

1、Run–》Run Configuration --》Java Application中进行参数设置。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值