討論命題:當(dāng)一個(gè)單例的對(duì)象長(zhǎng)久不用時(shí),會(huì)不會(huì)被jvm的垃圾收集機(jī)制回收。
首先說(shuō)一下為什么會(huì)產(chǎn)生這一疑問(wèn),筆者本人再此之前從來(lái)沒(méi)有考慮過(guò)垃圾回收對(duì)單例模式的影響,直到去年讀了一本書(shū),《設(shè)計(jì)模式之禪》秦小波著。在書(shū)中提到在j2ee應(yīng)用中,jvm垃圾回收機(jī)制會(huì)把長(zhǎng)久不用的單例類(lèi)對(duì)象當(dāng)作垃圾,并在cpu空閑的時(shí)候?qū)ζ溥M(jìn)行回收。之前讀過(guò)的幾本設(shè)計(jì)模式的書(shū),包括《Java與模式》,書(shū)中都沒(méi)有提到j(luò)vm垃圾回收機(jī)制對(duì)單例的影響。并且在工作過(guò)程中,也沒(méi)有過(guò)單例對(duì)象被回收的經(jīng)歷,加上工作中很多前輩曾經(jīng)告誡過(guò)筆者:盡量不要聲明太多的靜態(tài)屬性,因?yàn)檫@些靜態(tài)屬性被加載后不會(huì)被釋放。因此對(duì)jvm垃圾收集會(huì)回收單例對(duì)象這一說(shuō)法持懷疑態(tài)度。漸漸地,發(fā)現(xiàn)在同事中和網(wǎng)上的技術(shù)人員中,對(duì)這一問(wèn)題也基本上是鮮明的對(duì)立兩派。那么到底jvm會(huì)不會(huì)回收長(zhǎng)久不用的單例對(duì)象呢。
對(duì)這一問(wèn)題,筆者本人的觀點(diǎn)是:不會(huì)回收。
下面給出本人的測(cè)試代碼
class Singleton { private byte[] a = new byte[6*1024*1024]; private static Singleton singleton = new Singleton(); private Singleton(){} public static Singleton getInstance(){ return singleton; } } class Obj { private byte[] a = new byte[3*1024*1024]; } public class Client{ public static void main(String[] args) throws Exception{ Singleton.getInstance(); while(true){ new Obj(); } } }
名稱(chēng)欄目:單例模式垃圾回收_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理-創(chuàng)新互聯(lián)
本文地址:http://sd-ha.com/article10/shgdo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷(xiāo)、商城網(wǎng)站、網(wǎng)站改版、企業(yè)建站、品牌網(wǎng)站設(shè)計(jì)、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容