JVM内存及其启动参数简单认识

首先了解一下JVM是什么?

在java中:

JDK:是java在开发中所需用到的jar包等,相当于我们常说的工具类一样。

JRE:是我们的java程序运行时所需要的环境,一般JRE包含JDK。

JVM:是java程序或者jar包运行时所需要的内存,就像windows系统一样,需要划分出一定的内存空间才能运行。

JVM(基于JDK1.7)内存主要分为三个:新生代区域、老年代区域、永久代区域。

其中新生代区域约占整个堆内存的1/3,老年代区域约占整个堆内存的2/3 。

新生代区域又可以分为三部分:

Eden区(约占整个新生代区域8/10)、

SurvivorFrom区(约占整个新生代区域1/10)、

SurvivorTo区(约占整个新生代区域1/10)。

1.新生代

新生代时垃圾回收的主要区域。在新生代内存中,存储一些除了大对象以外的新创建的对象,也是对象创建和销毁最为频繁的区域,会频繁的出发MinorGC进行垃圾回收。

2.老年代

老年代主要存储的是有长生命周期的大对象(一般是2kb-128kb)。关于垃圾回收,GC过程为MajorGC,对象比较稳定时,M案件orG C不会频繁地触发。当老年代没有内存空间分配时,会抛出OOM(内存溢出异常)。

3.永久代

内存永久保存的区域。主要保存的是class文件和MetaData。class文件被加载时存放在永久代。

内存参数设置主要有7组:

1. -Xms :初始堆内存大小。 -Xmx :最大堆内存大小。

2. -XX:NewSize=1g

表示新生代区域大小为1GB 。一般建议设置为总堆内存大小的1/3,最好不要超过2/3 。

3. -XX:MaxPermSize=128M

表示最大永久代区域的大小(可以适当的调高大小)。

4. -XX:NewRatio=3

表示新生代与老年代的比值为3,也就是新生代如果是1,老年代就是3 。

5. -XX:SurvivorRatio=8

表示Survivor与Eden的比值是8,也就是在新生代内存中,Eden占8/10,SurvivorFrom占1/10,SurvivorTo占1/10 。

6. 垃圾回收器:

UseParNewGC:年轻代为多线程收集。

UseConcMarkSweepGC:老年代为并发收集。

7. OOM异常诊断设置:

-XX:HeapDumpOnOutOfMemoryError:当发生OOM时,转存储堆到文件

-XX:HeapDumpPath:导出堆的转存储文件路径地址

 

假如有一块物理内存是8GB,其中2GB预留给操作系统使用,剩下的6GB设为JVM的内存。

因此可以设置-Xms:6g -Xmx:6g -XX:NewSize=2GB

结束。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值