

Java內存管理分析
- 期刊名字:硅谷
- 文件大?。?83kb
- 論文作者:魏遠紅
- 作者單位:武漢信息傳播職業(yè)技術(shù)學(xué)院
- 更新時(shí)間:2020-09-25
- 下載次數:次
信息、SILICON科學(xué)Valley ■Java內存管理分析魏遠紅(武漢信息傳播職業(yè)技術(shù)學(xué)院湖北武漢43022)[摘 要]討論內存泄漏的概念, Java語(yǔ) 言的內存管理機制,垃圾回收器的原理,結合實(shí)際代碼分析Java語(yǔ)言中可能存在的內存泄漏問(wèn)題,并列舉幾種常見(jiàn)的檢測及防止上內存灣漏的方法。[關(guān)鍵詞]Jave垃圾回收 內存泄漏中圈分類(lèi)號: TP3 文獻標識碼; A文章編號: 1671-7597 (200) 0420040-01-.引離在一些被分配的對象,這些對象有下面兩個(gè)特點(diǎn),首先,這些對象是可達所謂內存泄漏,是指系統中存在無(wú)法回收的內存,有時(shí)候會(huì )造成內存的,即在有向圖中,存在通路可以與其相連:其次,這些對象是無(wú)用的,不足或系統崩潰。關(guān)于內存泄關(guān)問(wèn)題,對于c/c++來(lái)說(shuō),這個(gè)應該是比較常即程序以后不會(huì )再使用這些對象。如果對象滿(mǎn)足這兩個(gè)條件,這些對象就見(jiàn)的問(wèn)題。對于Java語(yǔ)言,由于Java通過(guò)坨圾收集器(Garbage Collecti可以判定為Java中的內存泄漏,這些對象不會(huì )敏GC所回收,然而它卻占用-On, GC)自動(dòng)管理內存的回收,程序員不需要通過(guò)調用函數來(lái)釋放內存。內存。在C++中,內存泄漏的范圍更大- 些。 有些對象被分配了內存空間,因此,很多程序員認為Java不存在內存泄漏問(wèn)題,或者認為即使有內存泄然后卻不可達,由于C++中沒(méi)有GC, 這些內存將永遠收不回來(lái)。在Java中,潮也不是程序的責任,而是CC或JVM的問(wèn)題。 其實(shí),這種想法是不正確的,這些不可達的對象都由CC負責回收,因此程序員不需要考慮這部分的內存因為Java也存在內存泄露,但它的表現與C++不同。隨著(zhù)越來(lái)越多的服務(wù)器泄露。通過(guò)分析, 我們得知,對于C++,程序員需要自己管理邊和頂點(diǎn),程序采用Java技術(shù),例如JSP, Servlet, EJB等, 服務(wù)器程序往往長(cháng)期運而對于Java程序員只需要管理邊就可以了(不需要管理頂點(diǎn)的釋放) .通行。另外,在很多嵌入式系統中,內存的總量非常有限。內存泄露問(wèn)題也過(guò)這種方式,Java提高了編程的效率。因此, 通過(guò)以上分析,我們知道在就變得十分關(guān)鍵,即使每次運行少量泄漏,長(cháng)期運行之后, 系統也是面臨Java中也有內存泄漏,但范圍比C++要小-一些。因為Java從語(yǔ)言上保證,任崩漬的危險。何對象都是可達的,所有的不可達對象都由CC管理。二、Java理!內存的方法三、匐何檢測內存泄漏(-) Java垃圾回收器原理最后一個(gè)重要的問(wèn)題,就是如何檢測Java的內存泄漏。目前,我們通Java的內存管理就是對象的分配和釋放問(wèn)題。在Java中, 程序負需要常使用一些工具來(lái)檢查Java程序的內存泄漏問(wèn)題。市場(chǎng)上已有幾種專(zhuān)業(yè)檢通過(guò)關(guān)鍵字new為每個(gè)對象申請內存空間(基本類(lèi)型除外) ,所有的對象查Java內存泄漏的工具,它們的基本T.作甌理大同小異,都是通過(guò)監測都在堆(Heap)中分配空間。另外,對象的釋放是由GC決定和執行的。在Java程序運行時(shí),所有對象的申請、釋放等動(dòng)作,將內存管理的所有信息Java中,內存的分配是由程序完成的,而內存的釋放是有CC完成的,這種進(jìn)行統計、分析、可視化.開(kāi)發(fā)人員將根據這些信息判斷程序是否有內存收支兩條線(xiàn)的方法磅實(shí)簡(jiǎn)化了程序員的工作。但同時(shí),它也加重了JVW的工泄溯問(wèn)題.這些工具包括Optimizeit Profiler, JProbe Profiler,作。這也是Java程序運行速度較慢的原因之一。因為,GC為了能夠正確釋JinSight, Rational公司的Purify等.放對象,CC必須監挖每- 一個(gè)對象的運行狀態(tài),包括對象的申請、引用、被四、結柬語(yǔ)引用、賦值等,GC都衢 要進(jìn)行監控。綜上所述, Java也存在內存泄囂問(wèn)題。其原因主要是-些對象雖然不監視對象狀態(tài)是為了更加準確地、及時(shí)地釋放對象,而釋放對象的根再被使用,但它們仍然被引用。為了解決這些問(wèn)題,我們可以通過(guò)軟件工本原則就是該對象不再被引用。為了更好理解GC的工作原理,我們可以將具來(lái)檢查內存泄露,檢查的主要原理就是粲露出所有堆中的對象,讓程序對象考慮為有向圖的頂點(diǎn),將引用關(guān)系考慮為圖的有向邊,有向邊從引用員尋找那些無(wú)用但仍被引用的對象。者指向被引對象。另外,每個(gè)線(xiàn)程對象可以作為-個(gè)圖的起始頂點(diǎn),例如大多程序從main進(jìn)程開(kāi)始執行,那么該團就是以main進(jìn)程項點(diǎn)開(kāi)始的一棵根樹(shù)。在這個(gè)有向團中,根頂點(diǎn)可達的對象都是有效對象,CC將不回收這些對象。如果某個(gè)對象(連通子圖)與這個(gè)根頂點(diǎn)不可達(注意,該圖為參考文獻:有向圈),那么我們認為這個(gè)(這些)對象不再被引用,可以被CC回收。[1]Bruce Eckel著(zhù),侯捷譯,Java編程思想, 機械工業(yè)出版社, 1999(二)什么是Java中的內存泄露[2]Joshua Bloch著(zhù),Effective Java, 中國電力出版社, 2004.下面,我們就可以描述什么是內存泄漏。在Java中, 內存泄漏就是存[3]中國程序員論壇,. csdn. net.(.上接第51頁(yè))更為簡(jiǎn)便和符合現代軟件工程。就這一一點(diǎn)而言,Web應用可以看成是傳統2004.C/S結構的分布式擴展。對比這兩種方式,我們會(huì )發(fā)現它們會(huì )越來(lái)越相似,[2]徽軟公司著(zhù),基于C#的Windors應用程序設計,北京:高等教育出版最后的區別只在于客戶(hù)端是什么。Web應用與C/S的主要不同只在于Web應用杜, 200的客戶(hù)端是蒸于瀏覽器的,而C/S應用的客戶(hù)端則五花八門(mén),什么都有。它中國煤化工等教育出版社,200們的優(yōu)缺點(diǎn)也將主要由這一點(diǎn)決定。二北京:清華大學(xué)出版社,2008YHCN M H G大學(xué)出版社,200銬文獻:[7]開(kāi)發(fā)視界論壇,htp:///w st. org cn/bbs.[8]CSON網(wǎng)站,htp://blog. csdn. net.[1]微軟公司著(zhù),面向. NET的Web應用程序設計,北京:高等教育出版社,[40].
-
C4烯烴制丙烯催化劑 2020-09-25
-
煤基聚乙醇酸技術(shù)進(jìn)展 2020-09-25
-
生物質(zhì)能的應用工程 2020-09-25
-
我國甲醇工業(yè)現狀 2020-09-25
-
JB/T 11699-2013 高處作業(yè)吊籃安裝、拆卸、使用技術(shù)規程 2020-09-25
-
石油化工設備腐蝕與防護參考書(shū)十本免費下載,絕版珍藏 2020-09-25
-
四噴嘴水煤漿氣化爐工業(yè)應用情況簡(jiǎn)介 2020-09-25
-
Lurgi和ICI低壓甲醇合成工藝比較 2020-09-25
-
甲醇制芳烴研究進(jìn)展 2020-09-25
-
精甲醇及MTO級甲醇精餾工藝技術(shù)進(jìn)展 2020-09-25