程序计数器、虚拟机栈、本地方法栈三个区域随线程而生,随线程而灭。栈中的栈帧随着方法的进入和退出进行出栈和入栈。
java堆和方法区不一样,只有程序运行期间才能知道创建了哪些对象,这些对象的分配和回收是动态的。
对象已死的判断方法:
1.引用计数器算法:给对象添加一个引用计数器,当引用时计数器加1 ,引用失效时减1
缺点:难以解决对象之间循环引用问题。
2.根搜索算法(java采用)
在根搜索算法中不可达的对象不一定必死,宣告一个对象死亡要经过两次标记:
1.第一次标记并进行执行finalize方法
2.如果在finalize方法成功拯救自己,第二次标记时将它移出“即将回收”的集合
来看下面一段代码:
public class FinalizeGC {
public static FinalizeGC SAVE_HOOK=null;
public void isAlive(){
System.out.println("yes, i am still alive:");
}
@Override
protected void finalize() throws Throwable{
super.finalize();
System.out.println("finalize method executed!");
FinalizeGC.SAVE_HOOK=this;
}
public static void main(String[] args) throws InterruptedException
{
SAVE_HOOK=new FinalizeGC();
SAVE_HOOK=null;
System.gc();
Thread.sleep(500);//暂停500ms等待执行finalize方法
if(SAVE_HOOK!=null){
SAVE_HOOK.isAlive();
}else{
System.out.println("i am dead!");
}
//自救失败 ,代码和上面一样
//原因:任何一个对象的finalize方法都只会被系统调用一次,
//如果对象面临下一次回收,它的finalize方法不会被再次执行
SAVE_HOOK=null;
System.gc();
Thread.sleep(500);
if(SAVE_HOOK!=null){
SAVE_HOOK.isAlive();
}else{
System.out.println("i am dead!");
}
}
}
分享到:
相关推荐
漫谈Java垃圾收集器 Java垃圾收集器是Java虚拟机(JVM)中的一种自动内存管理机制,旨在释放程序员从手动内存管理的繁琐工作中解脱出来。垃圾收集器通过跟踪对象的引用关系,确定哪些对象是可以被释放的,然后将其...
Java垃圾收集器使用小诀窍详解 Java垃圾收集器是Java虚拟机(JVM)中一个非常重要的组件,它负责管理Java程序中的内存资源,防止内存泄露和溢出。垃圾收集器的使用小诀窍可以帮助开发者写出高效的Java程序,避免...
Java垃圾收集器是Java语言中的一个关键特性,它负责自动管理程序中的内存,尤其是在对象生命周期结束时进行内存的释放。这篇3000字的毕业设计论文外文翻译主要探讨了Java垃圾收集器的工作原理及其对性能的影响。 在...
Java垃圾收集器是Java语言的核心特性之一,它自动化地处理内存管理,使得程序员无需手动回收内存,从而减少了潜在的内存泄漏问题。Java虚拟机(JVM)中的垃圾收集器通过一个低优先级的线程——垃圾收集器线程来监控...
Java垃圾收集器是Java语言的重要特性,它负责自动管理程序中的内存空间,避免手动内存管理带来的问题,如内存泄漏。垃圾收集器通过一个系统级的线程——垃圾收集线程来工作,它会在Java虚拟机(JVM)空闲时检查并...
Java垃圾收集器是Java编程语言的核心特性之一,它自动化地管理程序的内存空间,极大地简化了内存管理的工作,避免了手动回收内存可能导致的错误和内存泄漏问题。以下是对Java垃圾收集器的详细解析: 1. **工作原理*...
主要整理内容为:分析了垃圾收集的算法和JDK1.7中提供的7款垃圾收集器的特点以及运作原理。以及内存分配策略
Java垃圾收集器是Java语言中的一个关键特性,它负责自动管理程序中的内存,尤其是对象的分配和回收。在一些编程语言中,如C++,在堆上分配对象可能需要较高的开销,但在Java中,由于垃圾收集器的存在,这个过程实际...
Java垃圾收集器是Java虚拟机(JVM)中的一个重要组成部分,它负责自动管理内存,尤其是对象生命周期的终结。Java堆是垃圾收集器的主要工作区域,因为所有Java对象都在堆中创建和销毁。由于堆空间有限,有效的内存...
Java垃圾收集器是Java语言中一个关键的特性,它负责管理程序运行时的内存空间,尤其是对象的分配和回收。在传统的编程语言如C++中,堆内存的管理需要程序员手动进行,分配和释放对象可能会涉及到复杂的内存操作,...
如何使用java垃圾收集器
### Java的垃圾收集器(GC)详解 #### 引言 垃圾收集器(Garbage Collector,简称GC)是Java语言的一项重要特性,它自动化管理内存,显著减轻了开发者手动管理内存负担,避免了常见的内存泄漏问题,提高了程序的...
在Java编程语言中,垃圾收集器(Garbage Collector, GC)和内存分配策略是至关重要的概念,它们确保了程序的高效运行和内存的有效管理。Java的自动内存管理系统使得程序员无需手动管理内存,而是由JVM(Java虚拟机)...
深入理解JVM垃圾收集算法与垃圾收集器
这是现代Java垃圾收集器主要采用的方法。 三、Java内存区域与垃圾收集 1. 堆内存:主要用于存储对象实例,是垃圾收集的主要区域。 2. 方法区:存储类信息、常量、静态变量等,部分现代JVM将其合并到堆中。 3. 栈...
Java垃圾收集器与内存分配策略是Java性能优化的重要组成部分。垃圾收集器的主要任务是自动管理Java应用程序的内存,确保程序运行过程中有效地回收不再使用的对象,从而避免内存泄漏。本文将详细讲解Java垃圾收集器的...
Java垃圾收集器有多种类型,包括: 1. 标记-清除收集器:遍历对象图标记存活对象,然后清理未标记对象,可能导致内存碎片。 2. 标记-压缩收集器:类似于标记-清除,但清理后会压缩存活对象,减少碎片。 3. 复制收集...
Java垃圾收集必备手册 Java 垃圾收集是 Java 语言中的一种自动内存管理机制,旨在释放不再使用的内存资源,以避免内存泄漏和提高程序性能。在这篇手册中,我们将深入探究 Java 垃圾收集的基础知识,包括垃圾收集的...