Java 垃圾回收
来源:互联网 发布:ubuntu接口配置ip地址 编辑:程序博客网 时间:2024/06/08 04:11
温故而知新。
这些知识是很久之前看一个视频记得,有些零碎。
GC 概念和算法:
GC (Garbage Collection) 垃圾收集 (1960年list就使用了GC)
Java中 GC的对象是堆空间和永久区。
GC的一些算法机制:
1. 引用计数法(老牌的垃圾回收算法) Java并没有使用这种算法
通过引用计数来回收垃圾,当一个对象没有被其他对象引用的时候就把它当成是垃圾,不过这种算法很难处理循环引用(如果几个都没有用的对象相互引用就不能被回收了)。
2.标记清除法(现代垃圾回收算法的基础思想)
分为两个阶段 ,标记和清除
标记:从根节点开始搜索,没有被遍历到的就当成是垃圾。
清除:标记之后,没有被标记的对象就会在这个阶段被清除。
3.复制算法(相对标记清除高效,不适用于存活对象多的场合,缺点就是空间浪费 )
将原有内存空间分为两块,用的时候只用一块。清除的时候将存活的对象复制到未使用的内存空间,清除正在使用的那一块内存空间。交换两个内存角色即可。 (老年代和大对象不复制, 整合标记清理思想)
4.分代思想 根据对象存活的周期分类,短命对象归为新生代,长命对象归为老年代。
少量对象存活,适合复制
大量对象存活,适合标记或者标记压缩
Stop-The-World
Java中一种全局暂停的现象
多半因为GC引起(其他: Dump线程 死锁检查 堆Dump也有较小的可能)
危害:长时间服务停止,无响应 。 可能引起主备切换,数据不同步。
***************************************************************************************************
GC 参数:
都是新生代复制算法 老年代标记-压缩
串行收集器:(单线程)
最古老,最稳定,效率高,会产生较长的停顿
并行收集器:(多线程(多核支持))
新生代并行 老年代串行
多线程并发 应用程序暂停
Parallel收集器(更加关注吞吐量)
CMS收集器(Concurrent Mark Sweep并发(与用户线程一起执行)标记清除 )
停顿时间短 吞吐量变低 清理不彻底
老年代收集器
此文更多的是为了巩固自己已学知识,如有不正确的地方,欢迎指出。
1 0
- Java垃圾回收
- java垃圾回收算法
- JAVA垃圾回收问题
- Java 垃圾回收
- JAVA垃圾回收
- Java中的垃圾回收
- Java垃圾回收器
- java垃圾回收机制
- java垃圾回收
- java 垃圾回收 算法
- java垃圾回收
- Java垃圾回收机制
- Java垃圾回收简介
- IBM Java垃圾回收
- java垃圾回收
- java垃圾回收机制
- java 垃圾回收
- 【java】垃圾回收机制
- leetcode 二叉树中序遍历的递归和非递归实现
- leetcode 二叉树后续遍历的递归和非递归实现
- C++中的虚函数、纯虚函数
- 使用CSS改变表格边框样式
- 线程池原理及创建(C++实现)
- Java 垃圾回收
- 缓存框架OSCache部分源码分析
- 向上/向下取整和四舍五入编程实现
- 理解Java中hashCode的作用
- hibernate学习 hibernate-tutorials(四)——envers
- 关于我
- 解决Gradle版本不匹配
- tinder项目感言
- Maven Package Compilation Error