jvm堆配置参数
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堆配置参数的更多相关文章
- jvm内存配置参数
请看下面题目: 对于jvm内存配置参数: -Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio=3 其最小内存值和Survior区总大小分别是: a. 51 ...
- 深入理解JVM一配置参数
一.JVM配置参数分为三类参数: 1.跟踪参数 2.堆分配参数 3.栈分配参数 这三类参数分别用于跟踪监控JVM状态,分配堆内存以及分配栈内存. 二.跟踪参数 跟踪参数用于跟踪监控JVM,往往被开发人 ...
- JVM内存配置参数-XMX,-XMS,-XMN的例子
转载:http://www.nowcoder.com/questionTerminal/093bfa948d144ce3b0a68b938ae8b4ec 对于JVM内存配置参数: -Xmx10240m ...
- 一定要记住的14个JVM内存配置参数
jvm setting的参数确实比较多(Oracle官网Java HotSpot VM Options),但是作为一名java开发者,那几个最常用最基本的参数设置和意义一定要死记和理解.这里推荐一个网 ...
- 使用maven时,如何修改JVM的配置参数;maven命令执行时到底消耗多少内存?
maven是使用java启动的,因此依赖JVM,那么如何修改JVM参数? MAVEN_OPTS 在系统的环境变量中,设置MAVEN_OPTS,用以存放JVM的参数,具体设置的步骤,参数示例如下: MA ...
- 这些JVM命令配置参数你知道吗?
JVM是多数开发人员视为理所当然的Java功能和性能背后的重负荷机器.然而,我们很少有人能理解JVM是如何进行工作的—像任务分配和垃圾收集.转动线程.打开和关闭文件.中断和/或JIT编译Java字节码 ...
- JVM堆内存参数优化,让性能飞起来
堆内存是Java进程的重要组成部分,几乎所有与应用相关的内存空间都和堆有关.现在主要介绍与堆内存相关的参数设置,这些参数对Java虚拟机中非常重要的,也是对程序性能有着重要的影响.让你彻底脱离OOM内 ...
- 对于JVM内存配置参数
-Xmx:最大堆大小 -Xms:初始堆大小 -Xmn:年轻代大小 -XXSurvivorRatio:年轻代中Eden区与Survivor区的大小比值 年轻代5120m, Eden:Survivor=3 ...
- 深入理解JVM(三)——配置参数
JVM配置参数分为三类参数: 1.跟踪参数 2.堆分配参数 3.栈分配参数 这三类参数分别用于跟踪监控JVM状态,分配堆内存以及分配栈内存. 跟踪参数 跟踪参数用于跟踪监控JVM,往往被开发人员用于J ...
随机推荐
- CSRF学习笔记之CSRF的攻击与防御以及审计【00x3】
Hight.php完整代码如下: <?php if (isset($_GET['Change'])) { // Turn requests into variables $pass_curr = ...
- Alluxio部署(集群模式)
下载(pre-build for Hadoop 2.7) http://www.alluxio.org/download` 解压 tar -xvf alluxio-1.3.0-hadoop2.7-bi ...
- Exercise:Sparse Autoencoder
斯坦福deep learning教程中的自稀疏编码器的练习,主要是参考了 http://www.cnblogs.com/tornadomeet/archive/2013/03/20/2970724 ...
- C++ 类的继承五(类继承中的static关键字)
//类继承中的static关键字 #include<iostream> using namespace std; /* 派生类中的静态成员 基类定义的静态成员,将被所有派生类共享 根据静态 ...
- 日期类Date
Java在日期类中封装了有关日期和时间的信息,用户可以通过调用相应的方法来获取系统时间或设置日期和时间.Date类中有很多方法在JDK1.0公布后已经过时了,在8.3中我们将介绍JDK1.0中新加的用 ...
- <! - - ... - -> 注解
<A HREF TARGET> 指定超连结的分割视窗 <A HREF=#锚的名称> 指定锚名称的超连结 <A HREF> 指定超连结 <A NAME=锚的名称 ...
- python 2个版本如何共存
我们在安装Python3(>=3.3)时,Python的安装包实际上在系统中安装了一个启动器py.exe,默认放置在文件夹C:\Windows\下面.这个启动器允许我们指定使用Python2还是 ...
- CSS中的绝对定位(absolute)误区
这几天在慕课上看视频学习,偶然听到几个老师都说:CSS绝对定位在没有其他有除static定位的包含块的情况下是以body进行定位,如果要想相对当前元素的父元素来定位,父元素一定要设置position: ...
- db2 sql
import from empty.del of replace into table_name
- 微信 openId
摘要 关于微信开发的话题,例子确实已经有不少,但大部分都是人云亦云,很多小细节或者需要注意的地方却大多没有讲清楚,这令很多刚开始开发的人感觉大很迷茫.而我今天要说的话题,主要着眼于两个方面. 一:如何 ...