前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JAVA垃圾回收机制 - GC

JAVA垃圾回收机制 - GC

作者头像
叫我阿柒啊
发布2022-05-09 20:18:03
3350
发布2022-05-09 20:18:03
举报

OOM,你好

听说面试的java的人,总会被问你懂JVM么,知道垃圾回收机制么,进行过高并发编程么。自己在开发过程中也会遇到java.lang.OutOfMemoryError这样的错误,简称内存溢出OOM。

OOM出现的原因归根结底就是运行Java程序的堆内存满了,jvm就开始清理垃圾,又因为可清理的垃圾很少,内存还是不够用,或者基本上没有垃圾,导致程序没有内存可以用了,只能通过OOM宣布自己崩了。

有的同学就说了,我可以通过-Xmx1024m来增加我的程序内存为1G或者更大,这样OOM就不会出现了。其实不然,当对象无法回收的时候在某一时刻还是会OOM。那到底什么是可回收,什么无法回收。

谁是垃圾

垃圾的真实面目还是对象。只是用完了没人再用了就变成了垃圾。怎么判断对象是否可用呢,有一种算法叫做可达性算法,说白了就是new出来的对象没有被引用的时候,就是不可达的,就成了垃圾。

例如下面代码:

代码语言:javascript
复制
public class Test {
    public static void main(String[] args) {
        GirlFriend girl = new GirlFriend();
        // girl指向了null,不再指向new出来的对象,new出来的对象就变成了垃圾
        girl = null;
        // 手动启动垃圾回收,girl被回收
        System.gc();
    }
}

class GirlFriend {
    private int age;
    private int name;
}
GC有什么
  1. 垃圾回收器:说白了就是不同工具,都能清理垃圾,只是清理的效率不一样。新生代有新生代专用的,老年代有自己专用的,还有通用的。不吹不黑,U1S1,垃圾回收器用G1就行
  1. GC类型:JVM将heap(堆,就是内存)分为了新生代、老年代,各个代清理垃圾的时候都有自己的行动代号
  2. 回收算法:垃圾回收器对应了各自的回收算法。
笔记分享

下面是在学gc的时候自己做的笔记,分享一波。

结语

好记性不如烂笔头。共勉,晚安!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 入门到放弃之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 谁是垃圾
  • GC有什么
  • 笔记分享
  • 结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档