关于System.gc()
2012-10-30 10:03
218 查看
首先看一段程序:
class RubbishRelease
{
public void finalize()
{
System.out.println("the Object is going...");
}
public static void main(String[] args)
{
new RubbishRelease();
new RubbishRelease();
new RubbishRelease();
System.gc();
System.out.println("The program is over!");
}
}
当我们运行以上程序段后,可以发现每一次运行的结果都不一样?这是为什么呢?
当我们运行System.gc()之时,finalize()方法并不是立即就执行的。finalize()是由JVM自动调用的,你可以用System.gc(),但JVM不一定会立刻执行,JVM感觉内存空间有限时,才会开始执行finalize(),至于新的对象创建个数和被收集个数不同是因为收集的对象只和JVM的垃圾收集策略(垃圾回收的不确定性)有关。
class RubbishRelease
{
public void finalize()
{
System.out.println("the Object is going...");
}
public static void main(String[] args)
{
new RubbishRelease();
new RubbishRelease();
new RubbishRelease();
System.gc();
System.out.println("The program is over!");
}
}
当我们运行以上程序段后,可以发现每一次运行的结果都不一样?这是为什么呢?
当我们运行System.gc()之时,finalize()方法并不是立即就执行的。finalize()是由JVM自动调用的,你可以用System.gc(),但JVM不一定会立刻执行,JVM感觉内存空间有限时,才会开始执行finalize(),至于新的对象创建个数和被收集个数不同是因为收集的对象只和JVM的垃圾收集策略(垃圾回收的不确定性)有关。
相关文章推荐
- 关于System.gc()解决File的Delete和DeleteOnExit()删除文件无效的问题——已解决
- 关于Java中System.gc() 与System.runFinalization()
- 关于system.gc()与finalize()方法
- 关于URLRewriter报错:System.NullReferenceException: 未将对象引用设置到对象的实例 的解决
- 关于sharekey 与Open system+wep
- 关于android:sharedUserId="android.uid.system"这个系统级权限
- android垃圾回收机制及程序优化System.gc
- .Net中关于stirng转System.Type的一种实现思路详解
- 关于上下文System.Web.HttpContext
- JAVA学习笔记--关于System.out.println()
- 关于System.Web.Script.Serialization命名空间的引用
- 关于自动内存管理垃圾的产生和GC的应运而生。
- 关于Online Judge System的编译延时的一种解决方案
- 关于域控DC不能正常同步GC的解决办法(域控时间超过墓碑时间) 与域控SRV记录
- [转]C# 关于反射类[System.Reflection] 根据类名 动态调用 类方法
- 关于system()的一些用法
- 关于C#读取MySql数据时,返回DataTable中某字段数据是System.Array[]形式
- 关于linux下system()函数的总结
- 关于“未能加载文件或程序集“System.Core, Version=3.5.0.0
- 关于java的System.arraycopy()方法