在java中如何建立一個記憶體泄露

來源:互聯網
上載者:User

標籤:

今天訪問java 並發編程網,看到一個翻譯徵集令,並發編程網的作者從stackoverflow 網站上選取了一些經典問答,遂決定翻譯幾篇

徵集令地址:http://ifeve.com/stackoverflow-assembly/

翻譯系列文章:

1.Java 核心類庫中的一些設計模式

2. hashMap 與hashTable之間的區別

3.  在java中如何建立一個記憶體泄露

譯文:在java中如何建立一個記憶體泄露

問題: 我之前參加了一個面試, 被問到在java中如何建立一個記憶體泄露。不用說我當時不知道說啥,如何建立一個,我到現在也沒有頭緒。

可以給我示範一個例子嗎?


回答:

有一個方式可以建立一個純Java的記憶體泄露(運行代碼中對象不可達,但仍然駐留在記憶體裡)

1. 應用建立了一個長時間啟動並執行線程(或者使用線程池,這會使記憶體泄露更快)
2.線程從類載入器載入一個類

3. 這個類分配一個大記憶體塊(例如new byte[1000000]) ,把它通過強引用指向一個靜態成員變數,然後把它自己的引用儲存到ThreadLocal 中。分配巨大的記憶體這一步是可選的(泄露類的執行個體是足夠的,只不過這樣做將會使泄露更快發生)

4.線程清除所有自訂類的引用 或者讓類載入器重新載入

5.重複以上步驟


先下班了,翻譯待續。。。。。。。



原文:原文地址:http://stackoverflow.com/questions/6470651/creating-a-memory-leak-with-java








在java中如何建立一個記憶體泄露

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.