JVM内存组成及分配及一些JVM参数设置

最近的工作需要在Eclipse里设置一下参数,查阅网上的资料后,现总结如下

-Xms12m
-Xmx13m
-XX:MaxPermSize=512m
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=../.
-XX:+PrintGCDateStamps
-XX:+PrintGCDetails
-XX:+UseGCLogFileRotation
-XX:NumberOfGCLogFiles=5
-XX:GCLogFileSize=10M
-Xloggc:../swt_gc.log

eclipse设置jvm

参数中-vmargs的意思是设置JVM参数,所以后面的其实都是JVM的参数了,我们首先了解一下JVM内存管理的机制,然后再解释每个参数代表的含义。

堆(Heap)和非堆(Non-heap)内存

按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给 自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法 的代码都在非堆内存中。

堆内存分配

JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指 定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制。因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。

非堆内存分配

JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。

JVM内存限制(最大值)

首先JVM内存限制于实际的最大物理内存(废话!呵呵),假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。简单的说就32位处理器虽然 可控内存空间有4GB,但是具体的操作系统会给一个限制,这个限制一般是2GB-3GB(一般来说Windows系统下为1.5G-2G,Linux系统 下为2G-3G),而64bit以上的处理器就不会有限制了。

JVM参数设置

-XX:+HeapDumpOnOutOfMemoryError 当JVM发生OOM时,自动生成DUMP文件
-XX:HeapDumpPath=../.参数表示生成DUMP文件的路径,也可以指定文件名称,例如:-XX:HeapDumpPath=${目录}/java_heapdump.hprof。如果不指定文件名,默认为:java_*.hprof。

以下是gc输出的格式,输出为

2015-05-25T15:59:44.288+0800: 0.309: [GC [PSYoungGen: 9216K->1510K(10752K)] 9216K->1917K(11264K), 0.0073922 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] 

-XX:+PrintGCDateStamps 输出gc的触发时间(2015-05-25T15:59:44.288+0800)
-XX:+PrintGCDetails gc输出格式(0.309: [GC [PSYoungGen: 9216K->1510K(10752K)] 9216K->1917K(11264K), 0.0073922 secs] [Times: user=0.00 sys=0.00, real=0.01 secs])

-XX:+UseGCLogFileRotation 启用GC日志文件的自动转储
-XX:NumberOfGCLogFiles=5 GC日志文件的循环数目
-XX:GCLogFileSize=10M 控制GC日志文件的大小
-Xloggc:../swt_gc.log 输出GC日志到文件(路径必须是存在的路径)

参照来源:

http://www.cnblogs.com/yyyyy5101/articles/1898737.html
http://blog.csdn.net/softwave/article/details/6238747
http://makeanything.blog.51cto.com/758034/1641925

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值