来源: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对象,一般池对象都在这个区域活跃。 三个区的示意图如下:

最新文章

  1. 大数据通过PHP快速插入MYSQL的方法
  2. NOIP2014pj子矩阵[搜索|DP]
  3. jqGrid使用方法
  4. js014-表单脚本
  5. 【原】iOS学习43即时通信之XMPP(2)
  6. Eclipse序列号生成代码
  7. LaTeX 有哪些「新手须知」的内容?
  8. Linux文件描述符与打开文件之间的区别(转载)
  9. cojs EX_香蕉 题解报告
  10. PHP 点滴疑惑
  11. Java或web中解决所有路径问题
  12. C语言的编译过程和GCC编译参数
  13. 本地如何搭建IPv6环境测试你的APP
  14. JVM学习之强引用、弱引用、软引用、虚引用
  15. QReadWriteLock上锁容忍的等待时间是多久?
  16. springMVC+Hibernate4+spring整合实例二(实例代码部分)
  17. javascript:没有定义的变量和没有定义的属性
  18. (reverse)Palindromes hdu2163
  19. Unable to find the wrapper ”https” - did youforget to enable it when you configured PHP?
  20. ASP.NET Core CMS管理后台

热门文章

  1. iOS的流畅性
  2. TensorFlow初学
  3. @DateTimeFormat无效原因
  4. servlet缺省路径
  5. Lua 中的 RSA 加解密实现
  6. php && 运算符使用说明
  7. BZOJ 2820 luogu 2257 yy的gcd (莫比乌斯反演)
  8. Linux系统下安装 rpm 软件和源代码 软件包
  9. jQuery 简单介绍
  10. Bridge桥接模式(设计模式11)