程序计数器、虚拟机栈、本地方法栈三个区域随线程而生,随线程而灭。栈中的栈帧随着方法的进入和退出进行出栈和入栈。
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垃圾收集器的主要职责是自动回收程序中不再使用的对象所占用的内存空间,以防止内存...
Java垃圾收集器是Java语言中的一个关键特性,它负责自动管理程序中的内存,尤其是在对象生命周期结束时进行内存的释放。这篇3000字的毕业设计论文外文翻译主要探讨了Java垃圾收集器的工作原理及其对性能的影响。 在...
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 垃圾收集的基础知识,包括垃圾收集的...