自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

幾種典型的Java內(nèi)存泄漏

開發(fā) 后端
Java內(nèi)存泄漏是每個(gè)Java程序員都會(huì)遇到的問題,程序在本地運(yùn)行一切正常,可是布署到遠(yuǎn)端就會(huì)出現(xiàn)內(nèi)存無限制的增長,最后系統(tǒng)癱瘓,那么如何最快最好的檢測程序的穩(wěn)定性,防止系統(tǒng)崩盤,作者用自已的親身經(jīng)歷與各位網(wǎng)友分享解決這些問題的辦法。本文介紹了幾種典型的Java內(nèi)存泄漏。

我們知道了在Java中確實(shí)會(huì)存在內(nèi)存泄漏,那么就讓我們看一看幾種典型的泄漏,并找出他們發(fā)生的原因和解決方法。

全局集合

在大型應(yīng)用程序中存在各種各樣的全局?jǐn)?shù)據(jù)倉庫是很普遍的,比如一個(gè)JNDI-tree或者一個(gè)session table。在這些情況下,必須注意管理儲(chǔ)存庫的大小。必須有某種機(jī)制從儲(chǔ)存庫中移除不再需要的數(shù)據(jù)。

通常有很多不同的解決形式,其中最常用的是一種周期運(yùn)行的清除作業(yè)。這個(gè)作業(yè)會(huì)驗(yàn)證倉庫中的數(shù)據(jù)然后清除一切不需要的數(shù)據(jù)。

另一種管理儲(chǔ)存庫的方法是使用反向鏈接(referrer)計(jì)數(shù)。然后集合負(fù)責(zé)統(tǒng)計(jì)集合中每個(gè)入口的反向鏈接的數(shù)目。這要求反向鏈接告訴集合何時(shí)會(huì)退出入口。當(dāng)反向鏈接數(shù)目為零時(shí),該元素就可以從集合中移除了。 

緩存

緩存一種用來快速查找已經(jīng)執(zhí)行過的操作結(jié)果的數(shù)據(jù)結(jié)構(gòu)。因此,如果一個(gè)操作執(zhí)行需要比較多的資源并會(huì)多次被使用,通常做法是把常用的輸入數(shù)據(jù)的操作結(jié)果進(jìn)行緩存,以便在下次調(diào)用該操作時(shí)使用緩存的數(shù)據(jù)。緩存通常都是以動(dòng)態(tài)方式實(shí)現(xiàn)的,如果緩存設(shè)置不正確而大量使用緩存的話則會(huì)出現(xiàn)內(nèi)存溢出的后果,因此需要將所使用的內(nèi)存容量與檢索數(shù)據(jù)的速度加以平衡。

常用的解決途徑是使用java.lang.ref.SoftReference類堅(jiān)持將對象放入緩存。這個(gè)方法可以保證當(dāng)虛擬機(jī)用完內(nèi)存或者需要更多堆的時(shí)候,可以釋放這些對象的引用。

類裝載器

Java類裝載器的使用為內(nèi)存泄漏提供了許多可乘之機(jī)。一般來說類裝載器都具有復(fù)雜結(jié)構(gòu),因?yàn)轭愌b載器不僅僅是只與"常規(guī)"對象引用有關(guān),同時(shí)也和對象內(nèi)部的引用有關(guān)。比如數(shù)據(jù)變量,方法和各種類。這意味著只要存在對數(shù)據(jù)變量,方法,各種類和對象的類裝載器,那么類裝載器將駐留在JVM中。既然類裝載器可以同很多的類關(guān)聯(lián),同時(shí)也可以和靜態(tài)數(shù)據(jù)變量關(guān)聯(lián),那么相當(dāng)多的內(nèi)存就可能發(fā)生泄漏。

【編輯推薦】

  1. 詳細(xì)介紹Java的內(nèi)存管理與內(nèi)存泄露
  2. Java程序性能優(yōu)化之找出內(nèi)存溢出元兇
  3. 20個(gè)開發(fā)人員非常有用的Java功能代碼
  4. 走進(jìn)Java 7中的模塊系統(tǒng)
  5. JavaFX 1.2 已經(jīng)發(fā)布 主要新功能一覽
責(zé)任編輯:yangsai 來源: CSDN博客
相關(guān)推薦

2019-01-30 18:24:14

Java內(nèi)存泄漏編程語言

2012-06-19 15:12:20

Java內(nèi)存泄露

2024-03-11 08:22:40

Java內(nèi)存泄漏

2009-06-16 11:20:22

內(nèi)存泄漏

2024-01-30 10:12:00

Java內(nèi)存泄漏

2015-03-30 11:18:50

內(nèi)存管理Android

2010-09-25 11:07:45

Java內(nèi)存泄漏

2012-08-13 10:14:36

IBMdW

2023-12-18 10:45:23

內(nèi)存泄漏計(jì)算機(jī)服務(wù)器

2024-02-21 08:00:55

WindowsDWM進(jìn)程

2012-02-22 21:28:58

內(nèi)存泄漏

2009-06-10 22:03:40

JavaScript內(nèi)IE內(nèi)存泄漏

2021-10-11 09:51:37

模塊化UPS架構(gòu)

2022-07-29 08:17:46

Java對象內(nèi)存

2021-03-07 17:17:07

Java內(nèi)存閉包

2022-05-26 09:51:50

JavaScrip內(nèi)存泄漏

2011-06-16 09:28:02

C++內(nèi)存泄漏

2013-08-07 10:16:43

Android內(nèi)存泄漏

2016-07-05 14:09:02

AndroidJAVA內(nèi)存

2020-06-08 09:18:59

JavaScript開發(fā)技術(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號