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()