1、-Xms初始堆大小
默认物理内存的1/64(<1GB)(官方建议)
2、-Xmx最大堆大小
默认物理内存的1/4(<1GB)(官方建议),实际中建议不大于4GB
3、一般建议设置 -Xms=-Xmx最大堆大小
好处是避免每次在gc后,调整堆的大小,减少系统内存分配开销
4、整个堆大小=年轻代大小+年老代大小+持久代大小

jvm新生代(young generation)
1、新生代=1个Eden区+2个Survivor区
2、-Xmn 年轻代大小(1.4 or lator)
-XX:NewSize, -XX:MaxNewSize(设置年轻代大小(for 1.3/1.4))
默认值大小为这个堆的3/8
3、-XX:NewRatio
年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)
Xms=Xmx并设置了Xmn的情况下,改参数不需要进行设置
4、-XX:SurvivorRatio
Eden区与Survivor区的大小比值,设置为8,则两个Survivor区与一个Eden区的比值为2:8,
一个Survivor区占整个年轻代的1/10
5、用来存放JVM刚分配的java对象

java老年代(tenured generation)
1、老年代=整个堆-年轻代大小-持久代大小;
2、年轻代中经过垃圾回收没有回收掉的对象被复制到老年代;
3、老年代存储对象比年轻代年龄大的多,而且不乏大对象;
4、新建的对象也有可能直接进入老年代
4.1大对象,可以通过启动参数设置-XX:PretenureSize Threshold=1024(单位为字节,默认为0)
来代表超过多大时就不在新生代分配,而是直接在老年代分配
4.2大的数组对象,且数组中无引用外部对象
5、老年代大小无配置参数

java持久代(perm generation)
1、持久代=整个堆-年轻代大小-老年代大小
2、-XX:PermSize -XX:MaxPermSize
设置持久代的大小,一般情况推荐把-XX:PermSize设置成-XX:MaxPermSize的值为相同的值,
因为永久代大小的调整也会导致堆内存需要触发fullgc
3、存放Class、Method元信息,其大小与项目的规模、类、方法的数量有关。一般设置为128M就足够,
设置原则是预留30%的空间
4、永久代的回收方式
4.1、常量池中的常量,无用的类信息,常量的回收很简单,没有引用了就可以被回收
4.2、对于无用的类进行回收,必须保证3点:
类的所有实例都已经被回收
加载类的ClassLoader已经被回收
类对象的Class对象没有被引用(即没有通过反射引用该类的地方)

jvm堆配置参数的更多相关文章

  1. jvm内存配置参数

    请看下面题目: 对于jvm内存配置参数: -Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio=3 其最小内存值和Survior区总大小分别是: a. 51 ...

  2. 深入理解JVM一配置参数

    一.JVM配置参数分为三类参数: 1.跟踪参数 2.堆分配参数 3.栈分配参数 这三类参数分别用于跟踪监控JVM状态,分配堆内存以及分配栈内存. 二.跟踪参数 跟踪参数用于跟踪监控JVM,往往被开发人 ...

  3. JVM内存配置参数-XMX,-XMS,-XMN的例子

    转载:http://www.nowcoder.com/questionTerminal/093bfa948d144ce3b0a68b938ae8b4ec 对于JVM内存配置参数: -Xmx10240m ...

  4. 一定要记住的14个JVM内存配置参数

    jvm setting的参数确实比较多(Oracle官网Java HotSpot VM Options),但是作为一名java开发者,那几个最常用最基本的参数设置和意义一定要死记和理解.这里推荐一个网 ...

  5. 使用maven时,如何修改JVM的配置参数;maven命令执行时到底消耗多少内存?

    maven是使用java启动的,因此依赖JVM,那么如何修改JVM参数? MAVEN_OPTS 在系统的环境变量中,设置MAVEN_OPTS,用以存放JVM的参数,具体设置的步骤,参数示例如下: MA ...

  6. 这些JVM命令配置参数你知道吗?

    JVM是多数开发人员视为理所当然的Java功能和性能背后的重负荷机器.然而,我们很少有人能理解JVM是如何进行工作的—像任务分配和垃圾收集.转动线程.打开和关闭文件.中断和/或JIT编译Java字节码 ...

  7. JVM堆内存参数优化,让性能飞起来

    堆内存是Java进程的重要组成部分,几乎所有与应用相关的内存空间都和堆有关.现在主要介绍与堆内存相关的参数设置,这些参数对Java虚拟机中非常重要的,也是对程序性能有着重要的影响.让你彻底脱离OOM内 ...

  8. 对于JVM内存配置参数

    -Xmx:最大堆大小 -Xms:初始堆大小 -Xmn:年轻代大小 -XXSurvivorRatio:年轻代中Eden区与Survivor区的大小比值 年轻代5120m, Eden:Survivor=3 ...

  9. 深入理解JVM(三)——配置参数

    JVM配置参数分为三类参数: 1.跟踪参数 2.堆分配参数 3.栈分配参数 这三类参数分别用于跟踪监控JVM状态,分配堆内存以及分配栈内存. 跟踪参数 跟踪参数用于跟踪监控JVM,往往被开发人员用于J ...

随机推荐

  1. hdu1533 Going Home km算法解决最小权完美匹配

    Going Home Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  2. 全栈JavaScript之路(十四)HTML5 中与class属性相关的扩充

    1. getElementByClassName() :支持getElementsByClassName()方法的浏览器有IE 9+.Firefox 3+.Safari 3.1+.Chrome 和 O ...

  3. 安装 rbbitMQ redis mongo的三个扩展

    #!/bin/bash###install redis extend #########cd /usr/local/srctar fxvz redis-2.2.7.tgzcd redis-2.2.7/ ...

  4. 常用的AJAX框架

    你有没有想过设计你的网站像桌面应用程序?幸运的是,使用AJAX,我们可以做到这一点.通过使用AJAX,当我们只想更新网站的一部分(如天气信息或新闻面板)时,我们无需刷新整个页面.这使我们的网络应用看起 ...

  5. mysql 分数表实现排名

    首先初始化一张表 DROP TABLE IF EXISTS `lq_wx_sign`; CREATE TABLE `lq_wx_sign` ( `id` ) unsigned NOT NULL AUT ...

  6. 圆角带箭头的提示框css实现

    css是一个很强大的东西,很多网页效果,我们可以通过css直接实现.今天给大家分享的是一个用css实现的圆角带箭头的提示框. 效果如下图: 这一个样式主要涉及到了css的边框样式border的运用和定 ...

  7. oracle11g卸载,10g之类版本通用

    鉴于oracle一些比较稀奇的问题,本人没碰到的不能帮忙解决的.而且比较着急赶时间的亲们,我就只能推荐先卸载在安装的办法了,这个方法一般用时也就1个小时到1个半小时之间,切记按步骤删除,别漏删了,不然 ...

  8. (转)使用.NET Reflector 查看Unity引擎里面的DLL文件

    当你查看unity里面API的时候,是不是有时候追踪了一两步就碰到DLL文件走不下去了呢?很是不爽吧. 这种问题我也是经常碰到.这是人家商业引擎不想让你看到底层代码啦,所以着急不得. 不过,今天我终于 ...

  9. centos使用pypy

    pypy最大的特点是使用了jit,可以直接使用机器码而非字节码,大大的提高了效率 ======================== 安装步骤 1.安装pypy yum install pypy* -y ...

  10. IOS开发之自定义键盘

     本文转载至 http://blog.csdn.net/majiakun1/article/details/41242069 实际开发过程中,会有自定义键盘的需求,比如,需要添加一个表情键盘.本文提供 ...