您的位置:首页 > 其它

JVM的内存区域和垃圾回收

2014-03-23 13:53 246 查看
JVM的内存区域
1.堆:程序在运行时创建的对象基本上都是在堆中分配的内存,堆里的内存又分为年轻代和年老代,年轻代默认又分为80%的一块区域和两个10%的区域,用于内存回收,当然这个比例是可以通过参数来调整的。
2.栈:栈其实可以分为两种,一种是虚拟机栈,就是启动线程时为线程帧栈分配的内存;一种是本地方法栈,就是为Native方法分配的内存。
3.方法区:JVM加载类信息、常量、静态变量等使用的内存区域,方法区也称为永久代。
4.直接内存区:直接内存区是属于JVM内存区域以外的区域,如NIO,为了提高效率,避免操作系统和JVM内存间的复制,可以通过ByteBuffer直接访问操作系统的内存。
JVM的垃圾回收
JVM的垃圾回收是通过垃圾收集器来实现的,不同的内存区域使用的垃圾收集器也不同,常用的垃圾收集器有年轻代单线程收集器、年轻代多线程收集器、老年代单线程收集器、老年代多线程收集器,CMS收集器。垃圾收集器的算法大致有标记清除法、标记整理法、标记复制法,一般年轻代主要用标记复制法,老年代主要用标记清除和标记整理法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: