java垃圾回收机制简介

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( ) 来进行垃圾回收

原文地址:https://www.cnblogs.com/yuxiangyuan-cloud/p/12167922.html

时间: 2024-12-18 10:06:09

java垃圾回收机制简介的相关文章

Java垃圾回收机制以及内存泄漏

原文地址 前言 在segmentfault上看到一个问题:java有完善的GC机制,那么在java中是否会出现内存泄漏的问题,以及能否给出一个内存泄漏的案例.本问题视图给出此问题的完整答案. 垃圾回收机制简介 在程序运行过程中,每创建一个对象都会被分配一定的内存用以存储对象数据.如果只是不停的分配内存,那么程序迟早面临内存不足的问题.所以在任何语言中,都会有一个内存回收机制来释放过期对象的内存,以保证内存能够被重复利用. 内存回收机制按照实现角色的不同可以分为两种,一种是程序员手动实现内存的释放

Java垃圾回收机制(GC)详解

Java垃圾回收机制(GC)详解 简介: 垃圾回收GC(Garbage Collection)是Java语言的核心技术之一,之前我们曾专门探讨过Java 7新增的垃圾回收器G1的新特性,但在JVM的内部运行机制上看,Java的垃圾回收原理与机制并未改变.垃圾收集的目的在于清除不再使用的对象.GC通过确定对象是否被活动对象引用来确定是否收集该对象.GC首先要判断该对象是否是时候可以收集.两种常用的方法是引用计数和对象引用遍历. 垃圾收集的算法分析: Java语言规范没有明确地说明JVM使用哪种垃圾

Java 垃圾回收机制(早期版本)

Java 垃圾回收机制在我们普通理解来看,应该视为一种低优先级的后台进程来实现的,其实早期版本的Java虚拟机并非以这种方式实现的. 先从一种很简单的垃圾回收方式开始. 引用计数 引用计数是一种简单但是速度很慢的垃圾回收技术. 每个对象都含有要给引用计数器,当有引用连接至对象时,引用计数+1. 当引用离开作用域或者被置为null时,引用计数-1. 当发现某个对象的引用计数为0时,就释放其占用的空间.   这种方法开销在整个程序生命周期中持续发生,并且该方法有个缺陷,如果对象之间存在循环引用,可能

Java垃圾回收机制的工作原理

Java垃圾回收机制的工作原理 [博主]高瑞林 [博客地址]http://www.cnblogs.com/grl214 一.Java中引入垃圾回收机制的作用 当我们建完类之后,创建对象的同时,进行内存空间的分配,为了防止内存空间爆满,java引入了垃圾回收机制,将不再引用的对象进行回收,释放内存,循环渐进,从而防止内存空间不被爆满. 1.垃圾回收机制的工作原理 创建的对象存储在堆里面,把堆比喻为院子中的土地,把对象比喻为土地的管理者,院子比喻为java虚拟机,当创建一个对象时,java虚拟机将给

Java深度历险(四)——Java垃圾回收机制与引用类型

Java语言的一个重要特性是引入了自动的内存管理机制,使得开发人员不用自己来管理应用中的内存.C/C++开发人员需要通过malloc/free 和new/delete等函数来显式的分配和释放内存.这对开发人员提出了比较高的要求,容易造成内存访问错误和内存泄露等问题.一个常见的问题是会产生“悬挂引用(dangling references)”,即一个对象引用所指向的内存区块已经被错误的回收并重新分配给新的对象了,程序如果继续使用这个引用的话会造成不可预期的结果.开发人员有可能忘记显式的调用释放内存

成为Java GC专家(3)—如何优化Java垃圾回收机制

本文作者: ImportNew - 王晓杰 未经许可,禁止转载! 本文是成为Java GC专家系列文章的第三篇.在第一篇<成为JavaGC专家Part I — 深入浅出Java垃圾回收机制>中我们学习了不同GC算法的执行过程,GC是如何工作的,什么是新生代和老年代,你应该了解的JDK7中的5种GC类型,以及这5种类型对于应用性能的影响. 在第二篇<成为JavaGC专家Part II — 如何监控Java垃圾回收机制>,我解释了JVM实际上是如何执行垃圾回收的,我们如何监控GC,以及

Java垃圾回收机制--入门

Java垃圾回收机制(gc) 在程序运行过程中,每创建一个对象都会被分配一定的内存用以存储对象数据.如果一味的去占用内存而不释放,则会遇到内存溢出的问题. 在程序运行的过程中,gc会用引用计数法去统计对象被多少其他对象持有,如果对象已经没有被引用,那么该对象转变为可复活状态 (对于gc线程来说对象有三种状态: 1.     可触及状态:程序中还有变量引用,那么此对象为可触及状态. 2.     可复活状态:当程序中已经没有变量引用这个对象,那么此对象由可触及状态转为可复活状态.CG线程将在一定的

【Java】Java垃圾回收机制

Java垃圾回收机制 说到垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联系起来.在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给了JVM来处理.顾名思义,垃圾回收就是释放垃圾占用的空间,那么在Java中,什么样的对象会被认定为“垃圾”?那么当一些对象被确定为垃圾之后,采用什么样的策略来进行回收(释放空间)?在目前的商业虚拟机中,有哪些典型的垃圾收集器?下面我们就来逐一探讨这些问题.以下是本文的目录大纲: 一.如何确定某个对象

【Java】怎么回答java垃圾回收机制

(1) GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法. (2) 对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址.大小以及使用情况.通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象.通过这种方式确定哪些对象是"可达的",哪些