java垃圾回收机制简介

jiiming 2020-01-08

1.背景

传统C 或C++是程序员负责回收已分配的内存,也就是显示进行垃圾回收。因为程序员不知道内存应该何时释放,所以会导致一些分配出去的内存得不到回收,造成 ”内存泄漏“ 。导致系统运行速度下降,程序瘫痪。

2。什么是内存泄漏?

一些分配出去的内存得不到回收,导致系统运行速度下降,甚至程序瘫痪的现象。

3.显示回收垃圾的缺点:

1)程序忘记及时回收无用内存,导致内存泄漏,降低系统性能

2)程序错误回收程序核心类库,导致系统崩溃

4.java中的垃圾回收机制 ,也就是GC (Garbage Collection)

java程序的内存分配和回收都是由JRE在后台自动进行的,这种机制叫“垃圾回收机制,Garbage Collection,即GC。

JRE提供了一条超级线程进行检测和控制,一般都是在CPU空闲或内存不足时进行自动回收垃圾,因为程序员无法掌控垃圾回收时间和顺序。

java的堆内存是一个运行时数据区,用于 保存 “对象”,即类的实例。程序中的所有对象都是放在堆内存中的,一般堆内存是由垃圾回收机制负责的。垃圾回收是一种动态存储管理技术,它会自动释放 “不再被程序引用的对象”,按特定算法回收垃圾。

5.java垃圾回收机制主要回收 两种情况:

(1)当没有对象引用指向原先分配给某个对象的内存时,该内存就成了垃圾。也就是当一个对象不再被引用的时候,其内存空间就会被回收

(2)垃圾回收也可以清除内存记录碎片。由于创建对象和垃圾回收器释放丢弃对象所占的内存空间,内存会出现碎片。“碎片”指分配给对象的内存块之间的空闲内存区,碎片处理将占用的堆内存移到堆的一端,JVM将整理出的内存重新分配给新对象。

6.垃圾回收机制的优点

(1)提高编程效率。不需要程序员花时间处理内存垃圾。

(2)保护程序的完整性,是java安全性策略的一个重要部分。

7.垃圾回收机制的缺点

垃圾回收影响程序性能。因为java虚拟机必须跟踪程序中有用的对象,从而确定哪些对象是需要 回收的,这样一来就会花费处理器一定的时间

8.垃圾回收 的特点;

(1)垃圾回收的目标是回收无用的对象的内存空间,这些内存空间是JVM中的内存空间,垃圾回收只能回收内存,对物理资源,如数据库连接、磁盘IO等资源无能为力。

(2)可以通过把引用对象的值设为null来暗示该对象为可回收对象

9.程序员手动回收垃圾并释放 内存空间:

通过 对象.finalize( ) 或者 System.gc( ) 来进行垃圾回收

相关推荐