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

