7点微信公众号:请点这里。7点测试网QQ总群:277957570。

7点测试网

 找回密码
 注册7点

QQ登录

只需一步,快速开始

查看: 1109|回复: 4

JVM内存分配、垃圾回收、启动参数

[复制链接]
发表于 2010-9-26 13:45:59 | 显示全部楼层 |阅读模式
本帖最后由 牙签 于 2010-9-26 20:44 编辑

JVM内存分配、垃圾回收、启动参数
一、Java内存组成
1.        组成图
JVM内存分配、垃圾回收、启动参数.JPG
2.        堆(Heap)
1.        运行时数据区域,所有类实例和数组的内存均从此处分配。Java虚拟机启动时创建。对象的堆内存由称为垃圾回收器的自动内存管理系统回收。
2.        组成
组成         详解
Young Generation         即图中的Eden + From Space + To Space
1.Eden存放新生的对象
2.Survivor Space有两个,存放每次垃圾回收后存活的对象
Old Generation         Tenured Generation 即图中的Old Space
主要存放应用程序中生命周期长的存活对象
3.        非堆内存
1.        JVM具有一个由所有线程共享的方法区。方法区属于非堆内存。它存储每个类结构,如运行时常数池、字段和方法数据,以及方法的代码。它是在Java虚拟机启动时创建的。
2.        除了方法区外,Java虚拟机实现可能需要用于内部处理或优化的内存,这种内存也是非堆内存。例如,JIT编译器需要内存来存储从Java虚拟机代码转换而来的本机代码,从而获得高性能。
3.        组成
组成         详解
Permanent Generation         即图中的Permanent Space
存放JVM自己的反射对象,比如类对象和方法对象
native heap         JVM内部处理或优化
二、GC策略
1.        堆
1.        JVM采用一种分代回收(generational collection)的策略,用较高的频率对年轻的对象(young generation)进行扫描和回收,这种叫做minor collection,而对老对象(old generation)的检查回收频率要低很多,称为major collection。这样就不需要每次GC都将内存中所有对象都检查一遍。
2.        非堆内存
1.        GC不会在主程序运行期对PermGen Space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen Space错误。
三、内存申请、对象衰老过程
1.        内存申请过程
1.        JVM会试图为相关Java对象在Eden中初始化一块内存区域;
2.        当Eden空间足够时,内存申请结束。否则到下一步;
3.        JVM试图释放在Eden中所有不活跃的对象(minor collection),释放后若Eden空间仍然不足以放入新对象,则试图将部分Eden中活跃对象放入Survivor区;
4.        Survivor区被用来作为Eden及OLD的中间交换区域,当OLD区空间足够时,Survivor区的对象会被移到Old区,否则会被保留在Survivor区;
5.        当OLD区空间不够时,JVM会在OLD区进行major collection;
6.        完全垃圾收集后,若Survivor及OLD区仍然无法存放从Eden复制过来的部分对象,导致JVM无法在Eden区为新对象创建内存区域,则出现"Out of memory错误";
2.        对象衰老过程
1.        young generation的内存,由一块Eden和两块Survivor Space构成。新创建的对象的内存都分配自eden。两块Survivor Space总有会一块是空闲的,用作copying collection的目标空间。Minor collection的过程就是将eden和在用survivor space中的活对象copy到空闲survivor space中。所谓survivor,也就是大部分对象在Eden出生后,根本活不过一次GC。对象在young generation里经历了一定次数的minor collection后,年纪大了,就会被移到old generation中,称为tenuring。
2.        剩余内存空间不足会触发GC,如eden空间不够了就要进行minor collection,old generation空间不够要进行major collection,permanent generation空间不足会引发Full GC。
四、JVM参数

标注:jvm参数表格,在网页上弄不好格式,看来是偶的技术比较差, ,只能上传一个附件了。

JVM参数.rar

5.48 KB, 下载次数: 27, 下载积分: 金钱 -3

发表于 2011-11-26 19:23:32 | 显示全部楼层
谢谢!
发表于 2012-3-15 10:24:17 | 显示全部楼层
多谢
发表于 2016-12-3 22:08:13 | 显示全部楼层
从基础学起
您需要登录后才可以回帖 登录 | 注册7点

本版积分规则

QQ|Archiver|手机版|小黑屋|7点测试网 ( 京ICP备09084002号

GMT+8, 2018-8-19 15:53 , Processed in 0.131482 second(s), 22 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表