Java 9 廢棄了 finalize 方法,FileInputStream 等也清空了 finalize 方法的實作,改用 PhantomReference 的機制,JVM 有個執行緒會監控 Reference,在實例不再被參考時,呼叫 close 方法。
至於相容性的部份,若有 FileInputStream 的子類,且自定義了 close 方法,實例化時會有個 AltFinalizer 產生,AltFinalizer 建立時會包裹 FileInputStream,AltFinalizer 的作用就是等著被回收時,呼叫自定義的 finalize 方法(被加了 @SuppressWarnings("deprecation")),其中呼叫了 FileInputStream 的 close 方法。
繞來繞去的 ...
IngramChen
積分 1
- 大部份的人都死在 Test,學不會,或是不能持久
- 物件導向學不好,也沒人帶 (這個時代不流行了)。Modeling 了老半天最後都是 Anemic domain model,用 database 思考的人比較多。
IngramChen
積分 0
ES 坑真的有人跳耶... 一種 J2EE 的即視感.
Event Sourcing 和 Micro service 這類架構都不是一開始就該去選的, 無論你系統多麼的新, 想做多大多肥.
而是你開發到後來發現某個部份有一個很難解的問題, 然後剛好這類特殊的架構可以解決你的痛點, 這時候才會開始評估 (還不見得要用咧