JVM内存
来源:互联网 发布:淘宝客服培训工作计划 编辑:程序博客网 时间:2024/06/05 12:13
在JAVA虚拟机JVM中,内存空间的粗略分配如下图所示:
我们可以这样理解:
1、JVM内存包含堆区(Heap)和非堆区( Code Cache(代码缓存区)、Perm Gen(永久代)、Jvm Stack(Java虚拟机栈)、Local Method Statck(本地方法栈)),
2、堆区又包含老一代区(Old Memory)和幼年区(Yong Gen),
3、幼年区又分为Eden Space(伊甸园)、Survivor Space(幸存者区),
4、Survivor Space(幸存者区)有两块区域S0和S1,
为什么要这样分呢?
1、为什么要区分新生代和老生代?
堆中区分的新生代和老年代是为了垃圾回收,新生代中的对象存活期一般不长,而老年代中的对象存活期较长,所以当垃圾回收器回收内存时,新生代中垃圾回收效果较好,会回收大量的内存,而老年代中回收效果较差,内存回收不会太多。
2、不同代采用的算法区别?
基于以上特性,新生代中一般采用复制算法,因为存活下来的对象是少数,所需要复制的对象少,而老年代对象存活多,不适合采用复制算法,一般是标记整理和标记清除算法。
因为复制算法需要留出一块单独的内存空间来以备垃圾回收时复制对象使用,所以将新生代分为eden区和两个survivor区,每次使用eden和一个survivor区,另一个survivor作为备用的对象复制内存区。
0 0
- 【JVM】配置jvm内存
- [jvm]JVM内存模型
- 【JVM】JVM内存区域
- JVM 内存
- JVM内存
- jvm内存
- jvm内存
- jvm 内存
- JVM内存
- JVM内存
- JVM---内存
- jvm内存
- JVM内存
- JVM 内存
- jvm 内存
- JVM内存
- jvm内存
- JVM内存
- AKKA学习笔记
- 程序员必读书籍及导读指南
- Oracle 11GR2的递归WITH子查询
- Android硬件访问服务学习之(一)Android通过JNI访问硬件
- 序列化方案性能评测 DIY
- JVM内存
- js中数据类型转换
- selenium学习第一步(firefox安装firebug和firepath插件)
- 二叉树的深度
- PHP+MySQL+Dreamweaver动态网站开发_安装篇
- mydatis笔记(二)实现关联数据的查询
- 字符编码和字符集
- windows环境下python安装pycrypto遇到的问题解决
- find命令与连接文件