首页 > 其他 > 详细

[JVM垃圾回收1]JVM垃圾回收概述

时间:2020-08-01 22:13:23      阅读:112      评论:0      收藏:0      [点我收藏+]

什么是垃圾

  • 垃圾是指在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾。
  • 如果不及时对内存中的垃圾进行清理,那么,这些垃圾对象所占用的内存空间会一直保留到应用程序结束,被保留的空间无法被其他对象使用。甚至可能导致内存溢出。

为什么需要GC

  • 对于高级语言来说,一个基本认知是如果不进行垃圾回收,内存迟早会消耗完。
  • 除了释放没用的对象,垃圾回收也可以清除内存库的记录碎片。碎片整理所占用的堆内存移动到堆的一端,以便JVM将整理出的内存分配给新对象。
  • 随着应用程序所应付的业务越来越庞大、复杂,用户越来越多,没有GC就不能保证程序的正常进行。而经常造成STW的GC又跟不上实际需求,所以才会不断地尝试对GC进行优化。

早起垃圾回收

  • 早起C/C++时代,垃圾回收基本上是手工进行的。开发人员可以使用new关键字进行内存申请,并使用delete关键字进行内存释放。
  • 这种方式可以灵活控制内存释放时间,但会给开发人员带来频繁申请和释放内存管理负担。如果忘记回收,就会产生内存泄漏。

现在,除了Java以外,C#,Python,Ruby等都使用了自动垃圾回收思想,也是未来趋势。这种自动化内存分配和垃圾回收方式已经成为现代开发语言必备标准。

Java垃圾回收机制

  • 自动内存管理,无需开发人员手动参与内存分配与回收,这样降低内存泄漏和内存溢出风险。
    • 没有垃圾收集器,java也会和cpp一样,各种指针悬停,野指针,泄漏问题
  • 自动内存管理机制,将程序员从繁琐内存管理释放,可以更专注业务开发
  • oracle官网垃圾回收介绍https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/index.html
  • 垃圾回收器可以对年轻代回收,也可以对老年代回收,甚至是全堆和方法区的回收。
    • 其中,Java堆是垃圾收集器的工作重点
  • 从次数上讲
    • 频繁收集Young区
    • 较少收集Old区
    • 基本不动Perm/Metaspace区
 

[JVM垃圾回收1]JVM垃圾回收概述

原文:https://www.cnblogs.com/old-cha/p/13416271.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!