finalizer

    9热度

    1回答

    我有一个应用程序,经历从单词go缓慢的内存泄漏。 使用ANTS内存分析器我可以看到所有泄漏的内存都由终结器队列的GC根保存。 我怀疑可能发生的事情是终结器死锁,等待锁定变为可用状态。 我们的类都没有实现明确的终结器,我们通常会避免它们,这让我认为锁可能与系统或库类有关。 我用SOS.dll来看看终结队列的内容,如果我正确地解释它,然后它报告的第一个项目,如果队列的头实际上代表是一个实例System

    51热度

    2回答

    我在程序上运行了一个堆转储。当我在内存分析工具中打开它时,发现org.logicalcobwebs.proxool.ProxyStatement的java.lang.ref.Finalizer占用大量内存。这是为什么?

    1热度

    2回答

    时,这是一个记录类构造函数抛出异常: public QFXLogger( int maxFileSize, TraceLevel logLevel) { this.maxFileSize = maxFileSize; logSwitch.Level = logLevel; //Configure log listener

    2热度

    2回答

    终结器不是析构函数,终结器是无用的。 从我听到很多Java资源对象处理finalize()“以防万一”。 这似乎是一种过分宽容的态度,可能导致错误。 您最不想做的事情就是敲定错误(定稿时未处理的资源)并将其打印到标准输出然后处理。 更为严格的态度可能是改变例外。 我不一定会实现这样的限制性资源对象,但我想知道如何去做。 但是在Java中,终结器中抛出的异常被忽略(除非对象被放回到列表中再次被终结)

    3热度

    2回答

    这是一个相当不错的观点,我希望答案是“这不是一个热门的主意” - 这就是说,它有一点我不感兴趣,如果有人愿意放纵。 型号代码: public partial class MyEntities : ObjectContext { // the idea is if the object is in a using block, this always gets called?

    0热度

    2回答

    时注册变量吗?每当我在Dispose方法中调用GC.SupressFinalizer()时,我应该给所有实例成员分配空值以清除它们,否则它们将在任何情况下被删除? 例如: class test : IDisposable { public int a = 10; public int b = 20; public int c = 39; private

    11热度

    3回答

    对象计数器面试官问我, 你怎么能实现一个类Foo,在这里您将能够指望该类的实例 。有更多线程正在创建该类Foo的实例 。 我叶回答与下面的代码 public class Foo { private static int count = 0; public Foo() { incrementCount(); } public void incre

    4热度

    1回答

    我有一个COM类型(使用tlbimp.exe创建)和一个包装这个对象的C#类。我想在我的C#包装器的终结器中执行一些清理。继准则here我可能会写这样的事: public class MyClass : IDisposable { private IMyComObject comObject; public MyClass() { comObject

    4热度

    3回答

    当看到整个终结器/ IDisposable问题时,通常会看到,最后,在所有长描述之后,会出现“LOL我所说的实际上没用的含义,你应该使用SafeHandle而不是再见!“ 所以我想知道SafeHandle不适合什么情况,这样你不得不求助于终结器/ IDisposable旧的方式?

    2热度

    2回答

    望着IDisposable模式+终结模式,有件事我不明白: public class ComplexCleanupBase : IDisposable { private bool disposed = false; // to detect redundant calls public ComplexCleanupBase() { // alloca