java回收器(GC,一下用GC代替回收器)并不是象一般人想像的那样定期的回收垃圾,从而让你完全不用当心内存的问题。事实是,JAVA还是存在内存溢出的时刻,只所以一般的系统和开发人员没有这么认识到,或者没有遇到,只是因为java jvm帮我们默默无闻的做了一些力所能及的处理!!其实,GC的工作原理是非常的复杂,以至于很多人没法说清楚,在这里,我就个人的理解,
总结一下:
1.GC并不是定期来回收你的垃圾内存,即是根据需要来回收。
2.GC的回收是因为:它认为你的系统已经开始内存紧张(这个就是jvm的神奇)
3.即使GC开始准备清理你的垃圾内存,但是如果该内存的引用还存在(不等于null),
这个时候GC仍然无能为力!
废话少说,看看下面的两个例子就知道了。
例子一:
public class finalizeTest{
public boolean checkout = false;
public void checkIn(){
this.checkout = true;
}
public void finalize(){
if (checkout)
{
System.out.print("the erroe");
}
}
public static void main(String[] args)
{
finalizeTest test = new finalizeTest();
test.checkIn();
System.gc();
System.out.println("Hello World!");
}
}
本来希望通过System.gc()命令来强制执行finalize()来处理清理事务,但是事与愿违,它没有执行。
只要main方法没执行完,永远都不会被回收。原因很简单,在main方法内
finalizeTest test = new finalizeTest(); 后的“System.gc();”是要求系统去回收垃圾。系统线程此时显然有闲暇时间,经过判断,发现test仍然引用着finalizeTest对象。所以,不会去回收test。
例子二:
public class TestGC{
public void finalize(){
System.out.print("the erroe");
}
public static void main(String[] args)
{
TestGC test = new TestGC();
分享到:
相关推荐
【C#垃圾回收机制GC】深入解析 垃圾回收(Garbage Collection, GC)是现代编程...总之,C#的垃圾回收机制GC是提升应用程序性能和稳定性的重要组成部分。理解和合理利用GC可以帮助开发者编写出更加高效、健壮的代码。
C#的垃圾回收机制(GC)是.NET框架中一个至关重要的特性,它负责自动管理和释放内存,从而减轻程序员的工作负担。GC的主要目标是回收不再使用的对象所占用的内存,以防止内存泄漏。在这个机制下,程序员无需手动管理...
Java提供了多种GC类型,包括串行GC、并行GC、并发Mark Sweep(CMS)、G1 GC和ZGC等。 1. 串行GC:适用于小型应用,它在单线程环境下运行,收集速度慢,但停顿时间短。 2. 并行GC:多线程处理垃圾回收,提高了效率,...
Java虚拟机(JVM)的垃圾回收(GC)机制是Java程序高效运行的关键部分,它自动管理内存,释放不再使用的对象以避免内存泄漏。本文主要探讨JVM堆内存的结构和GC的工作原理,以及如何进行性能调优。 JVM堆是Java应用...
Java垃圾回收(GC)机制是Java语言管理内存的自动化机制,它能够自动释放不再使用的内存空间,从而避免内存泄漏和程序崩溃等问题。在介绍Java GC机制之前,我们首先要了解垃圾回收的目的和意义。在任何程序中,内存...
Java垃圾回收(Garbage Collection, 简称GC)是JVM(Java Virtual Machine)管理内存的重要机制。在Java应用程序运行过程中,如果发现并回收不再使用的对象,可以防止内存泄漏,确保程序稳定运行。当我们遇到应用...
Java虚拟机(JVM)的垃圾回收(Garbage Collection, GC)是Java编程语言中一个重要的特性,它自动管理程序的内存,确保无用的对象被有效地释放,避免内存泄漏。理解JVM垃圾回收机制对于优化Java应用性能至关重要。 ...
3. **其他调优参数**:除了上述基础设置外,还有许多其他参数可用于进一步优化GC行为,例如调整新生代和老年代的比例、选择特定的垃圾回收算法等。 #### 32位与64位系统的堆大小差异 - 对于32位进程模型,进程的...
例如,可能会有一个`gc_init()`函数用于初始化垃圾回收器,一个`gc_collect()`函数执行垃圾收集,以及一系列的`gc_malloc()`、`gc_free()`等函数用于内存的申请和释放。 `test.c`文件是用来测试迷你垃圾回收器功能...
垃圾回收是Java虚拟机(JVM)管理...垃圾回收是一个复杂的过程,涉及到许多细节和权衡,不同的垃圾回收器会有不同的实现和策略。在实际应用中,开发者需要根据应用程序的特点选择合适的垃圾回收器以及进行相应的调优。
GC 垃圾回收机制是 .NET 中一个复杂的机制,对于提高程序性能和减少内存泄露非常重要。CLR 垃圾回收器根据所占空间大小划分对象,大对象和小对象的处理方式有很大区别。 大对象堆和垃圾回收 在 .NET 1.0 和 2.0 中...
GC总结
Java垃圾回收GC机制 Java垃圾回收GC机制是Java虚拟机(JVM)中的一种自动内存管理机制,它主要是为了解决Java程序中的内存问题。GC机制的出现使得Java程序员不再需要手动管理内存,提高了开发效率和程序的稳定性。 ...
JVM GC垃圾回收.pdfJVM GC垃圾回收.pdfJVM GC垃圾回收.pdfJVM GC垃圾回收.pdfJVM GC垃圾回收.pdf
JVM的内存模型,垃圾回收,GC
4. 调整垃圾回收参数:每个语言都有相应的参数调整GC的行为,如新生代和老年代的比例,以适应不同场景的需求。 通过理解并熟练运用垃圾回收技术,开发者可以编写出更高效、更稳定的程序,避免内存问题带来的困扰。...
### 垃圾回收机制详解 #### 一、引言 在现代软件开发中,内存管理一直是程序设计中的一项重要任务。...理解垃圾回收的工作原理和机制不仅有助于编写高效、可靠的程序,还能帮助开发者更好地优化和调试应用程序。
JVM(Java Virtual Machine)的垃圾回收(Garbage Collection,简称GC)是Java程序自动内存管理的关键机制。它负责识别不再使用的对象并释放其占用的内存,以防止内存泄漏。以下是对JVM垃圾回收(GC)原理的详细阐述...