finalizer

    9熱度

    1回答

    GC.SuppressFinalize與可正常不可終結對象相同的可終止對象?下面的代碼似乎證明他們區別對待,無論是在.NET 2和4: class Class1 { public Class1() { GC.SuppressFinalize(this); } //~Class1() { } } class Program {

    2熱度

    3回答

    我有關於.Net中的Dispose和Finalize方法的想法,如下所示。如果我錯了,請糾正我。 Dispose:實現IDisposable接口並刪除Dispose方法中的未使用/非託管代碼。如果需要立即移除,開發人員需要手動調用它,否則GC將在調用資源時處理資源。 Finalize:當GC調用它將釋放未使用的託管代碼,如果實現了IDisposable,它將調用Dispose方法釋放非託管資源(通

    7熱度

    4回答

    破壞者是奇怪。我試圖通過使用'智能'引用管理來消除使用一次性模式的需要,確保垃圾收集器可以在正確的時間收集對象。在我的一個析構函數中,我不得不等待來自另一個對象的事件,我注意到它沒有。應用程序簡單地關閉,析構函數在執行過程中被終止。 我希望一個析構函數總是被允許完成運行,但是如下面的測試表明這是不正確的。 using System; using System.Diagnostics; usin

    1熱度

    1回答

    是否有JVM選項(-XX或其他)來記錄要排隊等待完成的對象?我正在調試一個具有過多終結器的應用程序,這會導致大量的java.lang.ref.Finalizer實例(如YourKit Java Profiler所示)。查看YourKit分析器很難,根對象的finalize方法導致所有Finalizer實例。

    6熱度

    2回答

    我碰到一個面試問題,我不知道答案(有點幫助:))來到 以及它說的那種東西: Class SomeClass : IDisposable { public void Dispose() { while(true) { } } ~SomeClass() { Dispose(); } }

    0熱度

    1回答

    我有一個視圖(用戶控件),其中有選項卡控件和選項卡項。當應用程序關閉時,我想刪除所有選項卡項目,爲此我創建了一個調用RemoveAllTabItems函數的終結器。但是,當我試圖訪問選項卡控件項時出現錯誤:「調用線程無法訪問此對象,因爲不同的線程擁有它。」我試圖通過使用選項卡控制調度程序來修復錯誤,但通過執行此操作,不會調用remove函數。爲了說明 樣品的編號: private void Rem

    1熱度

    3回答

    我正在嘗試編寫一個Java單元測試,用於測試對終結器調用對象的影響。 爲了確保終結器被調用,我使用了一個WeakReference方法,我在其他地方看到了stackoverflow。 我的問題是,在本次測試TestFinalizer的finalize方法不會被調用即使WeakReference的只是一個迭代後出現空: public class FinalizerTest { priva

    3熱度

    1回答

    我們正在與第三方遺留系統一起工作,該系統需要對某些拆除邏輯具有線程關聯性。我們還在IIS內部託管了一個WCF服務,在重載的情況下,我們會無條件地卸載我們的應用程序域。在這些情況下,它會落到做清理的關鍵終結器上。不幸的是,在終結器中沒有線程關聯,第三方系統死鎖。 所以大致爲: public class FooEnvironment : CriticalFinalizerObject, IDispos

    0熱度

    1回答

    我有一個日誌記錄類,它將條目存儲在數據表dt中。然後我使用SQLBULKCOPY將該dt寫入sql表。基本的東西。問題是,我想只在dt中有50個條目時調用SQLBULKCOPY。問題是,如果我完成了(有意或無意,就像是使用log類的代碼塊拋出一個異常一樣)與日誌記錄對象並且dt中仍有15行? 我想要做的是在日誌類本身中有一些「finalize」代碼,它調用日誌類自己的方法,使用sqlbulkcop

    4熱度

    1回答

    我有一個C++庫,由Java通過基於SWIG的接口調用。在Java方面,我使用默認的結構接口和carrays.i的%array_class構建了一個包含指向其他結構數組的指針的結構。 因爲Java的垃圾收集器不知道頂層結構的成員,所以有時會釋放該數組,其數組有時會被釋放,其終結符delete[]就是它的後備內存。我需要一種解決方法,最好不要在Java中重複結構,因爲它相當大。 小例子看起來是這樣的