(转)JVM内存管理-----堆内存
2024-09-07 18:45:14
来源:http://blog.csdn.net/yu422560654/article/details/7952613
Heap堆内存理解
一个JVM实例只有一个堆内存,堆内存的大小是可以调节的。类加载器读取类文件后,需要把类文件、方法、常量放入到堆内存中,以便执行器执行,堆内存分为三部分:
1. Permanent Space 永久存储区
永久存储区是一个常驻内存区域,用于存放JDK自身所携带的Class,Interface的元数据,也就是说它存储的是运行环境必须的类信息,被装载进此区域的数据是不会被垃圾回收器回收掉的,关闭JVM才会释放此区域所占用的内存。
2.Young Generation Space 新生区
新生区是类的诞生、成长、消亡的区域,一个类在这里产生,应用,最后被垃圾回收器收集,结束生命。
新生区又分为两部分:伊甸区(Eden space)和幸存者区(Survivor pace)。
所有的类都是在伊甸区被new出来的。幸存区有两个: 0区(Survivor 0 space)和1区(Survivor 1 space)。当伊甸园的空间用完时,程序又需要创建对象,JVM的垃圾回收器将对伊甸园区进行垃圾回收,将伊甸园区中的不再被其他对象所引用的对象进行销毁。然后将伊甸园中的剩余对象移动到幸存0区。若幸存0区也满了,再对该区进行垃圾回收,然后移动到1区。那如果1区也满了呢?再移动到养老区。
3. Tenure Generation Space 养老区
养老区用于保存从新生区筛选出来的JAVA对象,一般池对象都在这个区域活跃。 三个区的示意图如下:
最新文章
- 大数据通过PHP快速插入MYSQL的方法
- NOIP2014pj子矩阵[搜索|DP]
- jqGrid使用方法
- js014-表单脚本
- 【原】iOS学习43即时通信之XMPP(2)
- Eclipse序列号生成代码
- LaTeX 有哪些「新手须知」的内容?
- Linux文件描述符与打开文件之间的区别(转载)
- cojs EX_香蕉 题解报告
- PHP 点滴疑惑
- Java或web中解决所有路径问题
- C语言的编译过程和GCC编译参数
- 本地如何搭建IPv6环境测试你的APP
- JVM学习之强引用、弱引用、软引用、虚引用
- QReadWriteLock上锁容忍的等待时间是多久?
- springMVC+Hibernate4+spring整合实例二(实例代码部分)
- javascript:没有定义的变量和没有定义的属性
- (reverse)Palindromes hdu2163
- Unable to find the wrapper ”https” - did youforget to enable it when you configured PHP?
- ASP.NET Core CMS管理后台