初探JVM堆内存
来源:互联网 发布:易娱网络海外部 编辑:程序博客网 时间:2024/05/03 12:57
java虚拟机在运行Java程序的时候会将其内存划分为好几个不同的数据区域。
1.永久代 JVM的方法区
用于存放静态类型数据,该块对垃圾回收没有什么影响。
2.新生代
所有新建的对象首先存放在新生代,目的在与尽快回收那些生命周期短的对象。
新生代主要由Eden和Survivor Space构成, 大小统过-Xmn指定, 一般将Survivor区分成S1,S2两块。Eden与Survivor Space的默认比例为8:1:1, 可以通过-XX:SurvivorRatio指定。
3.老年代
在新生代中经历了N个周期还没被回收的对象就会被复制到老年代,因此可以认为存放的都是一些生命周期较长的对象。
当对象在新生代存活次数超过上限时(可通过-XX:MaxTenuringThreshold配置, 对象存活的次数)就会被复制到老年代。相当于是Eden+某个S中存活下来的对象大于另一个S中的空间, 新生代中的对象就会被复制到老年代。
根据Java虚拟机规范的规定,Java堆可以处于物理上不连续的内存空间中,只要逻辑上是连续的即可。在JVM运行时,可以通过配置以下参数改变整个JVM堆的配置比例。
1.JVM运行时堆的大小
-Xms堆的最小值
-Xmx堆空间的最大值
2.新生代堆空间大小调整
-XX:NewSize新生代的最小值
-XX:MaxNewSize新生代的最大值
-XX:NewRatio设置新生代与老年代在堆空间的大小
-XX:SurvivorRatio新生代中Eden所占区域的大小
3.永久代大小调整
-XX:MaxPermSize
不管以什么形式来划分堆,其储存的都是对象实例,划分的目的也是为了更好的回收内存或更快的分配内存。
对大多数应用来说,堆内存应该是虚拟机管理的内存中最大的一块。java堆是可以被线程共享的区域,几乎所有的对象都在堆上进行内存空间的分配.
1.永久代 JVM的方法区
用于存放静态类型数据,该块对垃圾回收没有什么影响。
2.新生代
所有新建的对象首先存放在新生代,目的在与尽快回收那些生命周期短的对象。
新生代主要由Eden和Survivor Space构成, 大小统过-Xmn指定, 一般将Survivor区分成S1,S2两块。Eden与Survivor Space的默认比例为8:1:1, 可以通过-XX:SurvivorRatio指定。
3.老年代
在新生代中经历了N个周期还没被回收的对象就会被复制到老年代,因此可以认为存放的都是一些生命周期较长的对象。
当对象在新生代存活次数超过上限时(可通过-XX:MaxTenuringThreshold配置, 对象存活的次数)就会被复制到老年代。相当于是Eden+某个S中存活下来的对象大于另一个S中的空间, 新生代中的对象就会被复制到老年代。
根据Java虚拟机规范的规定,Java堆可以处于物理上不连续的内存空间中,只要逻辑上是连续的即可。在JVM运行时,可以通过配置以下参数改变整个JVM堆的配置比例。
1.JVM运行时堆的大小
-Xms堆的最小值
-Xmx堆空间的最大值
2.新生代堆空间大小调整
-XX:NewSize新生代的最小值
-XX:MaxNewSize新生代的最大值
-XX:NewRatio设置新生代与老年代在堆空间的大小
-XX:SurvivorRatio新生代中Eden所占区域的大小
3.永久代大小调整
-XX:MaxPermSize
不管以什么形式来划分堆,其储存的都是对象实例,划分的目的也是为了更好的回收内存或更快的分配内存。
0 0
- 初探JVM堆内存
- JVM初探- 使用堆外内存减少Full GC
- JVM初探- 使用堆外内存减少Full GC
- JVM初探 -JVM内存模型
- JVM内存初探
- 堆外内存初探
- 增加JVM堆内存
- Jvm堆内存管理
- jvm 堆内存分配
- JVM堆内存分块
- JVM堆内存详解
- JVM堆内存设置
- JVM堆内存设置
- 【jvm】堆外内存
- JVM 堆内存设置
- JVM堆内存结构
- JVM初探——使用堆外内存减少Full GC
- JVM内存管理-----堆内存
- JSP内置对象-request笔记
- 20170302 别人家的代码
- 委托和字典的结合使用
- HDU 2019 JAVA
- vuex快速上手
- 初探JVM堆内存
- OpenGL中如何实现通过鼠标点击选取对象(正交投影)
- Java中实现深拷贝的方法—学习笔记
- 从cobar到mycat的基本使用
- 从感知器到神经网络
- cordova学习五 真机调试
- HDU 2020 JAVA
- 伯努利分布(Bernoulli distribution)
- Android Based control -- CBAlignTextView