Java内存回收
来源:互联网 发布:sopcast网络电视直播 编辑:程序博客网 时间:2024/06/05 18:55
可进行回收的内存有
回收之前需要判断内存是否可以被回收,主要有两种算法
(1)引用计数算法(非Java)
(2)根搜索算法(Java)
内存回收算法介绍
(1)标记-清除算法(非Java)
回收前状态
回收后状态
优点:实现简单,其他算法的基础
缺点:效率低;会产生内存碎片
(2)标记-整理算法(非Java)
回收前状态
回收后状态
优点:没有内存碎片,避免了对象存活率高时回收效率低
缺点:实现相对复杂,效率也不高,不仅要标记所有存活对象,还要整理所有存活对象的引用地址。从效率上来说,标记/整理算法要低于复制算法。
(3)复制算法(Java算法)
回收前状态
回收后状态
优点:实现简单,效率高,没有内存碎片
缺点:内存利用率低,对象存活率高时回收效率低
(4)分代收集算法(是对上面几种算法的使用)
新生代(Young):每次垃圾回收都发现有大量对象死去,只有少量对象存活,这样选用复制算法,花很小的成本就可以完成收集。
老年代(Old):对象存活率高、没有额外的空间对他就行分配担保,这是就必须使用“标记-清理”或者“标记-整理”。
方法区或持久代(perm):通常这个区域内存变化不大,但发生不够用时会产生回收动作。有些虚拟机没有这个区域的回收,虚拟机规范中没有强制规定需要实现他的回收。
0 0
- java内存回收机制
- Java的内存回收
- Java 内存回收机制
- java内存回收机制
- java 的内存回收
- Java内存回收算法
- Java内存回收机制
- JAVA 内存回收机制
- Java内存回收机制
- java内存回收相关
- java 内存回收机制
- java内存回收机制
- Java内存回收
- java 内存回收
- java内存回收----引用
- Java内存回收机制
- Java内存回收机制
- java内存回收机制
- Android 4.0源码目录结构
- 把set中的对象转换为数组
- tomcat中 JVM 内存溢出及合理配置
- codeforces 587B(dp)
- Linux下安装Apache并以mod_wsgi方式部署django站点
- Java内存回收
- 将connection存放在Threadlocal里和数据库连接池的区别
- Jquery之Bind方法参数传递与接收的三种方法
- LeetCode----Generate Parentheses
- Android打包的那些事(AndroidStudio & Gradle)
- sicily 6084 Times17
- 3ds Max 插件概述
- 机器学习常见算法分类汇总
- 3 最小BLE应用简介