SYSTEM.GC FINALIZE小小的注释

垃圾回收是不可预知的,而且有多种垃圾回收的算法
System.gc(),同样是一个不可预知的方法,调用该方法即向JVM提出建议:有垃圾,请回收。具体回不回收由JVM的垃圾回收算法决定,我的垃圾回收算法如tracing算法是在cpu出现空闲资源的时候进行回收,找出那些不可达的对象当作垃圾回收,而有些是在内存满的时候回收那些不可达的垃圾对象
你的程序中体现出gc的作用,即它可以建议JVM进行垃圾回收,通过finalize()确保对象的释放,但是这个过程是不确定的。

时间: 2024-11-03 19:02:19

SYSTEM.GC FINALIZE小小的注释的相关文章

finalize()和system.gc()的区别

finalize()是由JVM自动调用的,你可以用System.gc(),但JVM不一定会立刻执行,JVM感觉内存空间有限时,才会开始执行finalize(),至于新的对象创建个数和被收集个数不同是因为收集的对象只和JVM的垃圾收集策略有关. 1.构造函数要点:构建器(Constructor)属于一种较特殊的方法类型,因为它没有返回值.这与 void返回值存在着明显的区别.对于void返回值,尽管方法本身不会自动返回什么,但仍然可以让它返回另一些东西.构建器则不同,它不仅什么也不会自动返回,而且

System.gc

  Java中的内存分配是随着new一个新的对象来实现的,这个很简单,而且也还是有一些可以"改进"内存回收的机制的,其中最显眼的就是这个System.gc()函数. 乍一看这个函数似乎是可以进行垃圾回收的,可事实并不是那么简单.其实这个gc()函数的作用只是提醒虚拟机:程序员希望进行一次垃圾回收.但是它不能保证垃圾回收一定会进行,而且具体什么时候进行是取决于具体的虚拟机的,不同的虚拟机有不同的对策.   java提供了从语言角度能够强制jvm进行垃圾回收,在我们的程序中可以通过调用Sy

什么时候在游戏中调用System.gc()?[javaME]

不知道大家有否看过"反编译的西伯利亚攻击源代码"的代码,okay,不知道它的权威性有多大,不过西伯利亚攻击这个游戏还是有名气的,也许值得一看.它的主引擎就是声明一个静态的图片数组: class MainEngine extends FullCanvas    implements Runnable{....    static Image imgs[];    public static void initImage() {      if (!isLoadImg) {        

Android System.gc()注意点

背景 在看square Leakcanary源码时,发现这样一段话: GcTrigger DEFAULT = new GcTrigger() { @Override public void runGc() { // Code taken from AOSP FinalizationTest: // https://android.googlesource.com/platform/libcore/+/master/support/src/test/java/libcore/ // java/la

Java垃圾回收finalize()作用详解_java

finalize 方法使用案例 package test; class TestGC { private String str = "hello"; TestGC(String str) { this.str = str; } public void finalize() { System.out.println(str); } } public class Hello { /** * @param args */ public static void main(String[] ar

理解finalize()-析构函数替代者

函数 理解finalize()-析构函数替代者   在许多方面,Java 类似于 C++.Java 的语法非常类似于 C++,Java 有类.方法和数据成员:Java 的类有构造函数: Java 有异常处理.       但是,如果你使用过 C++ 会发现 Java 也丢掉一些可能是你熟悉的特性.这些特性之一就是析构函数.取代使用析构函数,Java 支持finalize() 方法.       在本文中,我们将描述 finalize() 与 C++ 析构函数的区别.另外,我们将创建一个简单的 A

关于finalize()方法的解释。

原题:我在thinking in java中看见以下一段代码. //:Garbage.java//Demonstration of the garbage//collector and finalization class Chair {    static boolean gcrun=false;    static boolean f=false;    static int created=0;    static int finalized=0;    int i;    Chair()

理解finalize()-析构函数的替代者

在许多方面,Java 类似于 C++.Java 的语法非常类似于 C++,Java 有类.方法和数据成员:Java 的类有构造函数: Java 有异常处理. 但是,如果你使用过 C++ 会发现 Java 也丢掉一些可能是你熟悉的特性.这些特性之一就是析构函数.取代使用析构函数,Java 支持finalize() 方法. 在本文中,我们将描述 finalize() 与 C++ 析构函数的区别.另外,我们将创建一个简单的 Applet 来演示 finalize() 是如何工作的. 最终的界限 与 J

java继承和finalize()

通过"合成"方法创建新类时,永远不必担心对那个类的成员对象的收尾工作.每个成员都是一个独立的对象,所以会得到正常的垃圾收集以及收尾处理--无论它是不是不自己某个类一个成员.但在进行初始化的时候,必须覆盖衍生类中的finalize()方法--如果已经设计了某个特殊的清除进程,要求它必须作为垃圾收集的一部分进行.覆盖衍生类的finalize()时,务必记住调用finalize()的基础类版本.否则,基础类的初始化根本不会发生.下面这个例子便是明证:   //: Frog.java // T