之前总是觉得掌握了Java的垃圾回收机制,但稍微讨论下,就发现自己了解的不够全面,现在重新整理一下,感觉还是不错:
关于finalizer():
用于清理非正常开启的内存,一般情况下,只有你用native code时候,打开了内存区域,然后在finalizer方法里面进行关闭清理,但一般都不推荐这么做。打开了内存,不用就自己写方法关闭, finalize只用来检测bug,非正常的关闭,需要给出warning.
System.gc()的时候,会调用所有需要清理的对象的finalize方法,但这个时候并不会马上就开始清理, 需要等到jvm认为能够开始清理的时候,才会清理。过后,会将这些调用过finalize方法的对象全部清理掉。
System.gc的作用,在执行的时候, 会调用所有未清理对象的finalize方法, 这个时候并不会进行清理。 真正什么时候清理,由jvm自行决定。
如果没有gc, jvm清理的时候,它会先调用其finalize方法,然后再清理, 但不会清理所有的对象。
jvm内存的使用方式:
jvm在堆里面分配内存给对象,但是其速度很快。 在堆栈里面放置引用。
jvm占据的内存会采用带状,分块的模式。一条很长的内存带,带子上分很多块。
每次分配对象内存的时候,就取一个块,在带子上移动一格,分配给这个对象。 相比较c++的管理,减少了查询可用空间的步骤和时间。
引用计数的方法是用来确定死对象,有一个引用就计数+1, 但这样效率低下,而且互相引用的情况下失效。
另外一种方法: 从堆栈的引用开始查, 一层层查, 有活的就标记。 剩下,没有标记的,全是死对象
Jvm采用的自适应的方式来清理内存死对象:
stop and copy: 停止复制
暂停程序, 在带子里面找到相应的块, 如果这些块的死对象较多, 就把活对象考到其他空闲的块, 然后把死对象回收,标记这个块为空闲。
采用块的目的在于,减少对象拷贝的次数, 比如,有些对象很大,占据了一个块,或者多个块, 那么这个对象是不需要被来回拷贝的。
stop and sweep: 停止清扫
暂停程序, 找到死对象,清理掉。 但是不整理。 当确实很多碎片的时候,再启动stop and copy, 压缩,解放内存。
分享到:
相关推荐
Java垃圾回收器(Garbage Collector, GC)是Java编程语言中的一个重要特性,它负责自动管理内存,自动回收不再使用的对象,以防止内存泄漏。在Java中,程序员无需手动释放内存,这一过程由JVM(Java虚拟机)自动完成...
### Java垃圾回收详解 #### 垃圾回收基础概念 在Java编程语言中,垃圾回收(Garbage Collection, GC)是一项自动化的内存管理机制。它能够自动检测并释放那些不再被程序使用的对象所占用的内存空间,从而有效地...
### Java垃圾回收及内存泄漏知识点详解 #### 一、Java内存管理 1. **运行时数据区**:Java虚拟机管理的内存主要分为以下几个部分: - **方法区(Method Area)**:存储类的信息(如类名、字段、方法等)、常量、...
Java垃圾回收机制(GC)是Java编程语言的关键特性,它自动管理内存,释放不再使用的对象,以防止内存泄漏。GC的运作方式主要有两种策略:引用计数和对象引用遍历。 引用计数是一种简单但不完美的方法。每个对象都有...
Java垃圾回收机制是Java编程中一个非常重要的概念,尤其在面试和实际开发中常常被讨论。垃圾回收(Garbage Collection, GC)是Java虚拟机自动管理内存的一种方式,旨在自动识别并释放不再使用的对象,从而避免内存...
Java垃圾回收(GC)机制是Java语言管理内存的自动化机制,它能够自动释放不再使用的内存空间,从而避免内存泄漏和程序崩溃等问题。在介绍Java GC机制之前,我们首先要了解垃圾回收的目的和意义。在任何程序中,内存...
Java垃圾回收机制详解和调优.doc Java垃圾回收机制详解和调优.doc Java垃圾回收机制详解和调优.doc Java垃圾回收机制详解和调优.doc Java垃圾回收机制详解和调优.doc Java垃圾回收机制详解和调优.doc Java垃圾回收...
### Java垃圾回收原理详解 #### 一、引言 在现代软件开发中,Java作为一种广泛使用的编程语言,其垃圾回收机制是确保程序高效运行的关键技术之一。本文将深入探讨Java中的垃圾回收机制,包括其基本原理、不同类型...
Java中类的生命周期与java垃圾回收机制
Java垃圾回收机制的详细介绍,调理比较清晰,个人进行的总结。
【Java面试题】Java垃圾回收机制
Java垃圾回收机制是Java虚拟机(JVM)中一个至关重要的功能,它负责自动管理内存,释放不再使用的对象,防止内存泄漏,从而优化程序性能。本文将深入探讨Java垃圾回收的相关知识点。 首先,GC(Garbage Collection...
Java垃圾回收机制总结 Java垃圾回收机制是Java虚拟机(JVM)中的一种机制,用于防止内存泄露和有效地使用空闲的内存。垃圾回收机制的主要目的是为了回收无用的对象占用的内存空间,使该空间可被程序再次使用。 ...
Java垃圾回收(Garbage Collection, GC)是Java编程语言中一个重要的特性,它自动管理程序运行过程中的内存分配和释放,避免程序员手动处理内存管理,从而减少错误和提高程序的可维护性。以下是对Java垃圾回收的深入...
Java垃圾回收(Garbage Collection, 简称GC)是Java虚拟机(JVM)管理内存的一种机制,它自动地识别并清理不再使用的对象,从而避免了程序员手动管理内存可能导致的内存泄漏问题。垃圾回收是Java语言的一个重要特性...
Azul Systems CTO & co-Founder, Gil Tene 在SpringOne2GX 2012大会上发表的演讲资料,全面深入地阐述Java垃圾回收的四种机制。并介绍了当今世界上性能与吞吐量最高的JVM产品Zing JVM。 如果希望深入了解Java的垃圾...