我是靠谱客的博主 受伤砖头,最近开发中收集的这篇文章主要介绍java垃圾回收学习笔记一,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一,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垃圾回收学习笔记一所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(67)

评论列表共有 0 条评论

立即
投稿
返回
顶部