finalizer

    5热度

    1回答

    我想弄清楚如何正确地清理我的对象在C++/CLI后。 我已阅读或脱脂这两篇文章(one,two)看着the standard,看着其他一些问题,特别是this one。 我有各种信息: 终结应清理非托管资源(所以一切都被清理当对象被垃圾回收 析构函数应该清理托管资源(删除FOO或Foo.Dispose()?),并调用(根据1) 两种析构函数终结器和终结器可以被多次调用(参见8.8.8的3第26页端

    51热度

    1回答

    此代码... class Person: num_of_people = 0 def __init__(self, name): self.name = name Person.num_of_people += 1 def __del__(self): Person.num_of_people -= 1 def __

    1热度

    3回答

    我知道当垃圾回收确定没有更多的对象引用时,垃圾回收器会在对象上调用Java finalize方法。 在应用程序退出后执行Java finalize()方法吗?

    12热度

    3回答

    如果有一个无限循环会出现什么终结器线程做或的Java死锁 finalize方法。

    3热度

    4回答

    总体概述 我需要与拥有4种主功能的本地API绑定: void ActivateEngine(); int CreateModule(); void DestroyModule(int id); void TerminateEngine(); 而且文档指出ActivateEngine和TerminateEngine应该围绕任何调用CreateModule和DestroyModule。这是使

    3热度

    2回答

    我正在调查我们的应用程序中的GC和记忆使用情况,并注意到我们似乎有成千上万的定稿幸存者。不幸的是,仅靠这个数字并不能真正告诉我我们是否有问题。然而,我们看到了一般性能问题,而且我们的内存使用量很高,并且在GC中花费了大量时间。 理想情况下,我们没有任何控制权应该进入最终确定队列。这是一个错误,如果它确实。有什么方法或工具可以用来检查吗?我听说过的一个建议是使用终结器进行特殊构建,并在执行时记录日志

    0热度

    1回答

    我有这样的代码: ~MyClass() { try { if (Database.Exists(_connectionString)) { Database.Delete(_connectionString); } } catch { } } Database是一个静态类实体框架,而_connectionString是pr

    2热度

    4回答

    在一次采访中,我被问到,假设JVM在A类对象未被使用时运行gc。 class A{ //some code here protected void finalize(){ //code here } } 它确保执行finalize()。我说是的 接下来的问题是如果正在使用类A的obj,如果现在JVM运行GC,它会执行finalize()。我说不,它不会执行这个finalize(),因

    7热度

    1回答

    假设我有一些asm.js代码,可能是由emscripten创建的。假设它具有某种相当大的堆分配结构,它被asm.js函数返回为一个指针,该指针被某个JavaScript库拾取以包装在一个漂亮的JavaScript对象中。迄今为止很好。 但是,如果该对象超出范围并收集垃圾会发生什么。目前,asm.js代码无法知道这一点,因此结构的内存将保持分配状态,导致内存泄漏。 有什么方法可以在JavaScrip

    4热度

    3回答

    我的应用程序使用了一些第三方库(JTDS驱动程序),它有一些对象可以覆盖finalize()方法。我认为他们遵守关于什么时候不使用finalize()的所有规则 - 它不依赖于及时或完全运行它们。 问题是,他们的对象永远不会被释放。它们似乎卡在Finalizer队列中,并且从未删除。它们在几个星期内缓慢建立起来,并将JVM从堆空间运行。线程转储显示终结器线程正在等待某些事件调用finalize()