概述
一,garbage
一个对象,没有引用指向就是垃圾。
需要回收,如果过多,就会占满内存。
c++/c:需要自己去回收垃圾
java/python:有专门的垃圾回收器。
二,how to find a garbage?
reference count(引用计数,js、python等在用):
缺点:不能解决循环引用的问题
Root Searching(根可达算法)
可称为根的为:
JVM Stack,
native method stack,
run-time constant pool,
static references in method
垃圾找到了,那么常见的垃圾清除算法呢
三,垃圾清除算法
1,标记清除
找到就标记清除
缺点:容易产生碎片。
2,拷贝
内存分成一半,只能使用一半,将存活的拷贝到下面来,回收后,所有存活的在一起
就不会产生碎片。算法也简单,只需要拷贝一下。缺点空间浪费
3,标记压缩。
不会浪费空间、也不会产生碎片,但效率偏低(一边挪对象,一边压缩清理)
上面的三种平时一起使用
四,JVM
jvm是一套规范,最常见的是oracle的hotspot
在进行垃圾回收的时候,需要查看是什么型号的垃圾回收器,以及版本
默认的组合为:parallel Scavenge 与Parallel Old
查看的方式有:
ps与po组合的垃圾回收器
新生代采用拷贝算法(活着的拷贝到survivor区),只需要遍历有用的,不需要标记那些没用的。
最后
以上就是受伤砖头为你收集整理的java垃圾回收学习笔记一的全部内容,希望文章能够帮你解决java垃圾回收学习笔记一所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复