3 回答

TA貢獻1777條經(jīng)驗 獲得超3個贊
應(yīng)用程序創(chuàng)建一個長時間運行的線程(或者使用線程池更快地泄漏)。 線程通過一個(可選的自定義)ClassLoader加載一個類。 類分配大量內(nèi)存(例如: new byte[1000000]
),在靜態(tài)字段中存儲對它的強引用,然后將對自身的引用存儲在ThreadLocal中。分配額外的內(nèi)存是可選的(泄漏Class實例就足夠了),但是它會使泄漏的速度更快。 線程清除對自定義類或從其加載的ClassLoader的所有引用。 重復(fù)一遍。
更新

TA貢獻1872條經(jīng)驗 獲得超4個贊
hashCode()
equals()
class BadKey { // no hashCode or equals(); public final String key; public BadKey(String key) { this.key = key; }}Map map = System.getProperties();map.put(new BadKey("key"), "value"); // Memory leak even if your threads die.
添加回答
舉報