最近上了一個 .NET 的 training 。(.NET 和 C# 我是會,可是以前沒上過正規的 Training)
當中提到一點,這和我最近看到的 Java finalize 文件差不多,簡單來說是:
- 如果你的 object 有實作到 finalize ,它就可能在比你所想的時機更早就被 Finailize Thread 執行。
- 需等待 finalize 的部分,object 的大小越少越好,才能減少回收延誤
第一點,就是說它不會等你的 object 現在執行中的 method 完成之後才執行。而是可能和你的 method 同時執行。甚至比你的最後一個 method 更早執行。
在 .NET ,你能用GC.KeepAlive 來避免,而在 Java 可以利用空的 synchronze method 來確立最早可回收的時間點。
沒有留言:
發佈留言