小編給大家分享一下java中軟引用的使用方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
在內(nèi)存充足的時(shí)候,放置一些數(shù)據(jù)還沒有影響。一旦內(nèi)存不夠再去一個(gè)個(gè)的清理,就會(huì)比較麻煩。我們可以在設(shè)置代碼的時(shí)候就使用軟引用,當(dāng)內(nèi)存不足時(shí)就會(huì)自動(dòng)清理掉,放置一些不是很重要的數(shù)據(jù)非常好用。接下來我們就軟引用的概念、應(yīng)用場(chǎng)景、實(shí)例分享給大家,具體內(nèi)容往下看:
1.概念
軟引用是用來描述一些還有用,但非必須的對(duì)象。只被軟引用關(guān)聯(lián)著的對(duì)象,在系統(tǒng)將要發(fā)生內(nèi)存溢出異常前,會(huì)把這些對(duì)象列進(jìn)回收范圍之中進(jìn)行第二次回收,如果這次回收還沒有足夠的內(nèi)存,才會(huì)拋出內(nèi)存溢出異常
2.應(yīng)用場(chǎng)景
軟引用通常用來實(shí)現(xiàn)內(nèi)存敏感的緩存。如果還有空閑內(nèi)存,就可以暫時(shí)保留緩存,當(dāng)內(nèi)存不足時(shí)清理掉,這樣就保證了使用緩存的同時(shí),不會(huì)耗盡內(nèi)存。
3.實(shí)例
byte[] data = new byte[1*1024*1024]; ReferenceQueue<Object> referenceQueue = new ReferenceQueue<>(); SoftReference<byte[]> softReference = new SoftReference<>(data,referenceQueue); data = null; System.out.println("before:"+softReference.get()); try { for (int i = 0; i < 10; i++) { byte[] temp = new byte[3*1024*1024]; System.out.println("processing:"+softReference.get()); } } catch (Throwable t) { System.out.println("after:"+softReference.get()); t.printStackTrace(); } while(referenceQueue.poll()!=null){ System.out.println("self:"+softReference); softReference.clear(); softReference = null; System.out.println("last:"+softReference); } VM options:-Xms5m -Xmx5m -XX:+PrintGC
以上是“java中軟引用的使用方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
網(wǎng)站標(biāo)題:java中軟引用的使用方法-創(chuàng)新互聯(lián)
分享URL:http://www.yijiale78.com/article22/dgeocc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、Google、企業(yè)網(wǎng)站制作、定制開發(fā)、商城網(wǎng)站、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(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í)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容