- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
以下片段来自 RuntimeUtil.java来自 jlibs 保证 GC 垃圾收集完成。
因为它还使用 System.gc(),我不明白他们怎么能保证它会 100% 发生。
以下是片段:
/**
* This method guarantees that garbage collection is
* done unlike <code>{@link System#gc()}</code>
*/
public static void gc(){
Object obj = new Object();
WeakReference ref = new WeakReference<Object>(obj);
obj = null;
while(ref.get()!=null)
System.gc();
}
最佳答案
它与关于 Garbae Collection 的Strong Reference 和Weak Reference 相关。
强引用是普通的 Java 引用,您每天都在使用这种引用。
如果一个对象可以通过强引用链(strongly reachable)到达,则它不符合垃圾回收的条件。由于您不希望垃圾收集器破坏您正在处理的对象,因此这通常正是您想要的。
弱引用,简单地说,就是一种引用的强度不足以强制对象保留在内存中。弱引用允许您利用垃圾收集器的能力来确定可达性
pointed 类中的 gc() 方法适用于此概念。
/**
* This method guarantees that garbage collection is
* done unlike <code>{@link System#gc()}</code>
*/
public static void gc(){
Object obj = new Object();
WeakReference ref = new WeakReference<Object>(obj);
obj = null;
while(ref.get()!=null)
System.gc();
}
一旦 WeakReference 开始返回 null,它指向的对象就变成了垃圾并且 WeakReference 对象几乎没有用。这通常意味着需要进行某种清理;
这就是为什么他们保证它会 100% 发生。
关于Java:使用 jlibs 保证垃圾收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10039474/
以下片段来自 RuntimeUtil.java来自 jlibs 保证 GC 垃圾收集完成。 因为它还使用 System.gc(),我不明白他们怎么能保证它会 100% 发生。 以下是片段: /**
我目前正在从 C# 切换到 Java,并且正在尝试为 C# 资源文件找到存储字符串的良好替代方案。 internationalization of jlibs听起来正是我正在寻找的东西。但这对我不起作
我是一名优秀的程序员,十分优秀!