“猪能吃的是湿垃圾,猪不吃的是干垃圾,猪吃了会死的是有害垃圾,卖了能买猪的是干垃圾 ......”最近,上海人民都快被垃圾分类弄疯了。那作为程序员的你,知道在Java中是怎么垃圾回收的吗?

什么是垃圾回收?

说到垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联系起来。在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给了JVM来处理。顾名思义,垃圾回收就是释放垃圾占用的空间。自动垃圾回收是一种在堆内存中找出哪些对象在被使用,还有哪些对象没被使用,并且将后者删掉的机制。

所谓使用中的对象(已引用对象),指的是程序中有指针指向的对象;而未使用中的对象(未引用对象),则没有被任何指针给指向,因此占用的内存也可以被回收掉。

第一步:找出垃圾

垃圾回收器此时会找出哪些内存在使用中,还有哪些不是。

上图中,蓝色表示已引用对象,橙色表示未引用对象。垃圾回收器要检查完所有的对象,才能知道哪些有被引用,哪些没。如果系统里所有的对象都要检查,那这一步可能会相当耗时间。

第二步:清除垃圾

这一步会删掉标记出的未引用对象。内存分配器会保留指向可用内存的引用,以供分配新对象。

第三步:压缩

为了提升性能,删除了未引用对象后,还可以将剩下的已引用对象放在一起(压缩),这样就能更简单快捷地分配新对象了。

知了姐有话说

作为转行或者初学者来说,Java学习并不是一件容易的事,知了姐明确的告诉你,对于学习,你必须坚持! 并且制定一份适合自己的学习规划也特别重要。知了堂:零基础学Java难吗?应该怎么规划学习?​zhuanlan.zhihu.com

end

知了堂暑期夏令营将于7月7日开营

开设Java,信安,前端,测试方向课程

学习巩固理论知识的同时

跟着行业大牛积累项目经验

......

活动报名仅剩几天

java中垃圾收集_Java中垃圾回收机制相关推荐

  1. java gc回收机制种类_JAVA的垃圾回收机制(GC)

    1.什么是垃圾回收? 垃圾回收(Garbage Collection)是Java虚拟机(JVM)垃圾回收器提供的一种用于在空闲时间不定时回收无任何对象引用的对象占据的内存空间的一种机制. 2.什么时候 ...

  2. java 垃圾回收机制_Java的垃圾回收机制

    前言 在C++语言中, 程序员必须小心谨慎的处理每一项内存分配, 且内存使用完后必须手动释放曾经占用的内存空间.当内存释放不够完全时, 即存在分配但永不释放的内存块, 就会引起"内存泄漏&q ...

  3. python中垃圾回收机制_Python中的变量和垃圾回收机制

    1.python中的变量 python 和 java 中的变量本质不一样. java 中声明变量时要指定变量的数据类型,int.str或某一类,之后虚拟机就会在内存中申请一块空间,空间的大小跟类型相关 ...

  4. java如何关闭gc,GC垃圾回收机制,

    GC垃圾回收机制, 个人理解: 因为在使用JAVA创建一个类或者对象后,难免会存在以后不使用的情况,为了减少其继续再占用内存,必须建立一套清理垃圾的机制,但是怎么判断什么样的才算是不使用的垃圾呢,这里 ...

  5. java垃圾回收机制标记_Java的垃圾回收机制-垃圾收集算法(一)

    当需要排查各种内存溢出,内存泄漏等问题时,当垃圾收集成为系统达到更高并发的瓶颈时,我们有必要深入GC的原理. image.png 常见垃圾回收算法 在查看垃圾回收具体过程的时候,运行程序加上: -XX ...

  6. java gc会回收类么_Java GC 垃圾回收机制

    一.Java GC是什么? Java垃圾回收是对JVM(Java Virtual Machine)中的内存进行标记,并确定哪些内存需要回收,根据一定的回收策略,自动的回收内存,永不停息(Nerver ...

  7. java中垃圾收集_Java中的垃圾收集器是什么?

    如果无法从任何活动线程或任何静态引用访问对象,则该对象将有资格进行垃圾收集或GC. 换句话说,如果一个对象的所有引用都是空的,那么它就有资格进行垃圾回收.循环依赖关系不算为引用,因此如果对象A引用对象 ...

  8. Java教程分享:JVM垃圾回收机制之对象回收算法

    前言 在前面的文章中,介绍了JVM内存模型分为:堆区.虚拟机栈.方法区.本地方法区和程序计数器,其中堆区是JVM中最大的一块内存区域,在Java中的所有对象实例都保存在此区域,它能被所有线程共享. 在 ...

  9. gc java root_C#技术漫谈之垃圾回收机制(GC)

    GC的前世与今生 虽然本文是以.NET作为目标来讲述GC,但是GC的概念并非才诞生不久.早在1958年,由鼎鼎大名的图林奖得主John McCarthy所实现的Lisp语言就已经提供了GC的功能,这是 ...

最新文章

  1. IBM将收购Instana公司,持续推进其混合云和人工智能战略
  2. 【剑指offer-Java版】16反转链表
  3. ESXi主机遗忘密码重置密码
  4. 汇编题目:按A键,当松开的时显示字母A
  5. getOwnPropertyNames() keys()
  6. 超图iServer版本安装和使用入门图解
  7. 神经信息学整理(1)-神经细胞,MP模型
  8. project template
  9. python去空格的函数_Python怎么去掉最后的空格
  10. Android 中View仅仅能接收到ACTION_DOWN无法接收ACTION_MOVE和ACTION_UP解决的方法
  11. idea忽略文件不提交git_你可能会忽略的 Git 提交规范
  12. iOS 10 推送的简单使用
  13. 三星note10 android q,【极光ROM】-【三星NOTE10/NOTE10+/5G N97XX-9825】-【V8.0 Android-Q-TJ4】...
  14. 大数据对人们生活的积极影响_大数据对生活带来的影响
  15. [转载] 网页制作常用英语标示
  16. safari支持java_BLOB URL无法在Safari中使用
  17. 更改文字颜色为红色HTMl语言,红色字体CSS_设置html字体颜色为红色
  18. C/C++ 时间知识总结
  19. 啊哈C——学习3.7一起来找茬
  20. 新手如何做网站?成都网站建设达人浅析——网站制作新手教程

热门文章

  1. 扒一扒我们生活中常见的品牌小程序
  2. 浅谈PHP编写杨辉三角算法
  3. java使用file.createNewFile()创建文件时,报错目录不存在,如何解决
  4. 少儿艺术培训,如何用社群做到月吸1000+精准粉?
  5. 凯撒密码(java python)
  6. 一步一步教你如何解锁被盗的iPhone 6s
  7. 音视频开发系列(4):完成rtmp推流vlc拉流
  8. 个人网站如何进行备案
  9. cdn与gnd接地_浪涌测试中通讯端口TVS管损坏机理分析
  10. requireJS用法