導航:首頁 > 編程語言 > javaoutofmemory

javaoutofmemory

發布時間:2022-04-11 21:16:22

java中outofmemory異常

問題出在這里:paint函數中的repaint()調用。
repaint需要調用paint操作,而你的paint函數中又包含了repaint,這就形成一個循環調用,所以內存溢出了。
正確的做法是加入判斷條件,如果x超過了25就停止repaint。不過一般的實現方法是在paint中一次性畫出25張圖片。

Ⅱ java OutOfMemory 問題

如果程序中沒有分配這么大的內存的代碼,查查程序中是否用了ArrayList,StringBuffer,StringBuilder等等自動分配內存的對象,每次預設的空間用完都會自動擴展,而且可能是加倍分配空間。比如一些logger記錄對象的時候自動往ArrayList裡面加信息,但不清除,一旦預設的空間滿了,就會自動分配更多的空間,發生多次空間滿後,以後每次重新申請的空間就很大,這個時候的mpfile就會有很大的空間分配記錄。

Ⅲ java out of memory 怎麼解決

這個原因很多,可能代碼寫的有問題,資料庫連接沒關閉,創建了大量的無用對象,或者jvm配置的太少了,jvm又涉及到好幾個區的配置,配置不好也會出問題,所以遇到這種問題,要具體看報的什麼錯,先自己大概找找原因。

Ⅳ Java堆中的OutOfMemoryError錯誤是什麼原因如何避免

當JVM啟動時,使用了-Xms 參數設置的對內存。當程序繼續進行,創建更多對象,JVM開始擴大堆內存以容納更多對象。JVM也會使用垃圾回收器來回收內存。當快達到-Xmx設置的最大堆內存時,如果沒有更多的內存可被分配給新對象的話,JVM就會拋出java.lang.outofmemoryerror,你的程序就會當掉。在拋出OutOfMemoryError之前,JVM會嘗試著用垃圾回收器來釋放足夠的空間,但是發現仍舊沒有足夠的空間時,就會拋出這個錯誤。為了解決這個問題,你需要清楚你的程序對象的信息,例如,你創建了哪些對象,哪些對象佔用了多少空間等等。你可以使用profiler或者堆分析器來處理OutOfMemoryError錯誤。」java.lang.OutOfMemoryError:02Java02heap space」表示堆沒有足夠的空間了,不能繼續擴大了。

Ⅳ java運行過程中OutOfMemoryError是什麼原因

1.內存中載入的數據量過於龐大,如一次從資料庫取出過多數據;
2.集合類中有對對象的引用,使用完後未清空,使得JVM不能回收;
3.代碼中存在死循環或循環產生過多重復的對象實體;
4.使用的第三方軟體中的BUG;

5.啟動參數內存值設定的過小;
2.Java代碼導致錯誤的解決: 重點排查以下幾點:
1)檢查代碼中是否有死循環或遞歸調用。
2)檢查是否有大循環重復產生新對象實體。
3)檢查對資料庫查詢中,是否有一次獲得全部數據的查詢。一般來說,如果一次取十萬條記錄到內存,就可能引起內存溢出。這個問題比較隱蔽,在上線前,資料庫中數據較少,不容易出問題,上線後,資料庫中數據多了,一次查詢就有可能引起內存溢出。因此對於資料庫查詢盡量採用分頁的方式查詢。
4 )檢查List、MAP等集合對象是否有使用完後,未清除的問題。List、MAP等集合對象會始終存有對對象的引用,使得這些對象不能被GC回收。
查詢數據時,一次查詢過多的數據,後來調整了該部分的代碼,每次只取出指定量的數據,成功的解決該問題。
出現OutOfMemoryError,發現session的資源一直沒有被釋放產生的,最好通過session的invalidate()方法將session的資源釋放。
程序中出現死循環。 4.tomcat部署、運行出現OutOfMemoryError,加大內存參數值,解決此問題。

Ⅵ java內存溢出是什麼情況

首先先說一下JVM內存結構問題,JVM為兩塊:PermanentSapce和HeapSpace,其中
Heap = }。PermantSpace負責保存反射對象,一般不用配置。JVM的Heap區可以通過-X參數來設定。
當一個URL被訪問時,內存申請過程如下:
A. JVM會試圖為相關Java對象在Eden中初始化一塊內存區域
B. 當Eden空間足夠時,內存申請結束。否則到下一步
C. JVM試圖釋放在Eden中所有不活躍的對象(這屬於1或更高級的垃圾回收), 釋放後若Eden空間仍然不足以放入新對象,則試圖將部分Eden中活躍對象放入Survivor區
D. Survivor區被用來作為Eden及OLD的中間交換區域,當OLD區空間足夠時,Survivor區的對象會被移到Old區,否則會被保留在Survivor區
E. 當OLD區空間不夠時,JVM會在OLD區進行完全的垃圾收集(0級)
F. 完全垃圾收集後,若Survivor及OLD區仍然無法存放從Eden復制過來的部分對象,導致JVM無法在Eden區為新對象創建內存區域,則出現」out of memory錯誤」

JVM調優建議:

ms/mx:定義YOUNG+OLD段的總尺寸,ms為JVM啟動時YOUNG+OLD的內存大小;mx為最大可佔用的YOUNG+OLD內存大小。在用戶生產環境上一般將這兩個值設為相同,以減少運行期間系統在內存申請上所花的開銷。
NewSize/MaxNewSize:定義YOUNG段的尺寸,NewSize為JVM啟動時YOUNG的內存大小;MaxNewSize為最大可佔用的YOUNG內存大小。在用戶生產環境上一般將這兩個值設為相同,以減少運行期間系統在內存申請上所花的開銷。
PermSize/MaxPermSize:定義Perm段的尺寸,PermSize為JVM啟動時Perm的內存大小;MaxPermSize為最大可佔用的Perm內存大小。在用戶生產環境上一般將這兩個值設為相同,以減少運行期間系統在內存申請上所花的開銷。
SurvivorRatio:設置Survivor空間和Eden空間的比例

內存溢出的可能性

1. OLD段溢出
這種內存溢出是最常見的情況之一,產生的原因可能是:
1) 設置的內存參數過小(ms/mx, NewSize/MaxNewSize)
2) 程序問題
單個程序持續進行消耗內存的處理,如循環幾千次的字元串處理,對字元串處理應建議使用StringBuffer。此時不會報內存溢出錯,卻會使系統持續垃圾收集,無法處理其它請求,相關問題程序可通過Thread Dump獲取(見系統問題診斷一章)單個程序所申請內存過大,有的程序會申請幾十乃至幾百兆內存,此時JVM也會因無法申請到資源而出現內存溢出,對此首先要找到相關功能,然後交予程序員修改,要找到相關程序,必須在Apache日誌中尋找。
當Java對象使用完畢後,其所引用的對象卻沒有銷毀,使得JVM認為他還是活躍的對象而不進行回收,這樣累計佔用了大量內存而無法釋放。由於目前市面上還沒有對系統影響小的內存分析工具,故此時只能和程序員一起定位。

2. Perm段溢出
通常由於Perm段裝載了大量的Servlet類而導致溢出,目前的解決辦法:
1) 將PermSize擴大,一般256M能夠滿足要求
2) 若別無選擇,則只能將servlet的路徑加到CLASSPATH中,但一般不建議這么處理

3. C Heap溢出
系統對C Heap沒有限制,故C Heap發生問題時,Java進程所佔內存會持續增長,直到佔用所有可用系統內存

參數說明:

JVM 堆內存(heap)設置選項
參數格式
說 明

設置新對象生產堆內存(Setting the Newgeneration heap size)
-XX:NewSize
通過這個選項可以設置Java新對象生產堆內存。在通常情況下這個選項的數值為1 024的整數倍並且大於1MB。這個值的取值規則為,一般情況下這個值-XX:NewSize是最大堆內存(maximum heap size)的四分之一。增加這個選項值的大小是為了增大較大數量的短生命周期對象

增加Java新對象生產堆內存相當於增加了處理器的數目。並且可以並行地分配內存,但是請注意內存的垃圾回收卻是不可以並行處理的

設置最大新對象生產堆內存(Setting the maximum New generation heap size)
-XX:MaxNewSize
通過這個選項可以設置最大Java新對象生產堆內存。通常情況下這個選項的數值為1 024的整數倍並且大於1MB

其功用與上面的設置新對象生產堆內存-XX:NewSize相同

設置新對象生產堆內存的比例(Setting New heap size ratios)
-XX:SurvivorRatio
新對象生產區域通常情況下被分為3個子區域:伊甸園,與兩個殘存對象空間,這兩個空間的大小是相同的。通過用-XX:SurvivorRatio=X選項配置伊甸園與殘存對象空間(Eden/survivor)的大小的比例。你可以試著將這個值設置為8,然後監控、觀察垃圾回收的工作情況

設置堆內存池的最大值(Setting maximum heap size)
-Xmx
通過這個選項可以要求系統為堆內存池分配內存空間的最大值。通常情況下這個選項的數值為1 024的整數倍並且大於1 MB

一般情況下這個值(-Xmx)與最小堆內存(minimum heap size –Xms)相同,以降低垃圾回收的頻度

取消垃圾回收
-Xnoclassgc
這個選項用來取消系統對特定類的垃圾回收。它可以防止當這個類的所有引用丟失之後,這個類仍被引用時不會再一次被重新裝載,因此這個選項將增大系統堆內存的空間

設置棧內存的大小
-Xss
這個選項用來控制本地線程棧的大小,當這個選項被設置的較大(>2MB)時將會在很大程度上降低系統的性能。因此在設置這個值時應該格外小心,調整後要注意觀察系統的性能,不斷調整以期達到最優

最後說一句,你的機器的連接數設置也至關重要,連接的關閉最好把時間設置的少些,那些連接非常耗費資源。也是引起內存泄露的主要原因。

Ⅶ 如何解決java.lang.OutOfMemoryError

Java常見的幾種內存溢出及解決方法【情況一】:
java.lang.OutOfMemoryError:Javaheapspace:這種是java堆內存不夠,一個原因是真不夠(如遞歸的層數太多等),另一個原因是程序中有死循環;
如果是java堆內存不夠的話,可以通過調整JVM下面的配置來解決:
-Xms3062m
-Xmx3062m
【情況二】
java.lang.OutOfMemoryError:GCoverheadlimitexceeded
【解釋】:JDK6新增錯誤類型,當GC為釋放很小空間佔用大量時間時拋出;一般是因為堆太小,導致異常的原因,沒有足夠的內存。
【解決方案】:
1、查看系統是否有使用大內存的代碼或死循環;
2、通過添加JVM配置,來限制使用內存:
-XX:-UseGCOverheadLimit
【情況三】:
java.lang.OutOfMemoryError:PermGenspace:這種是P區內存不夠,可通過調整JVM的配置:
-XX:MaxPermSize=128m
-XXermSize=128m
【注】:
JVM的Perm區主要用於存放Class和Meta信息的,Class在被Loader時就會被放到PermGenspace,這個區域成為年老代,GC在主程序運行期間不會對年老區進行清理,默認是64M大小,當程序需要載入的對象比較多時,超過64M就會報這部分內存溢出了,需要加大內存分配,一般128m足夠。
【情況四】:
java.lang.OutOfMemoryError:Directbuffermemory
調整-XX:MaxDirectMemorySize=參數,如添加JVM配置:
-XX:MaxDirectMemorySize=128m
【情況五】:
java.lang.OutOfMemoryError:unabletocreatenewnativethread
【原因】:Stack空間不足以創建額外的線程,要麼是創建的線程過多,要麼是Stack空間確實小了。
【解決】:由於JVM沒有提供參數設置總的stack空間大小,但可以設置單個線程棧的大小;而系統的用戶空間一共是3G,除了Text/Data/BSS/MemoryMapping幾個段之外,Heap和Stack空間的總量有限,是此消彼長的。因此遇到這個錯誤,可以通過兩個途徑解決:1.通過-Xss啟動參數減少單個線程棧大小,這樣便能開更多線程(當然不能太小,太小會出現StackOverflowError);2.通過-Xms-Xmx兩參數減少Heap大小,將內存讓給Stack(前提是保證Heap空間夠用)。

Ⅷ java內存溢出怎麼解決

第一對所有的代碼包括頁面中的java代碼都進行一遍徹底的回顧檢查,
1.對那些靜態(static)的對象要特別留神,特別是類型為Map,List,Set的,靜態的變數會一直駐存在內存中,生命周期比較長,不會被垃圾器回收。
2.對於代碼,要審查是否生成了大量的冗餘的對象,還有一些邏輯業務處理的類,
演算法是否過於復雜,調整演算法,對於代碼認真審查,再仔細重構一遍代碼,能提高代碼質量,提高程序運行穩定性。

3.Java中的內存溢出大都是因為棧中的變數太多了。其實內存有的是。建議不用的盡量設成null以便回收,多用局部變數,少用成員變數。

1),變數所包含的對象體積較大,佔用內存較多。
2),變數所包含的對象生命周期較長。
3),變數所包含的對象數據穩定。
4),該類的對象實例有對該變數所包含的對象的共享需求。
4.在我的程序中對靜態變數的優化後,使程序佔用內存量至少提升了5k-10k。所以也不容忽視。

第二還有就是String類相關的東西:
1.字元串累加的時候一定要用StringBuffer的append方法,不要使用+操作符連接兩個字元串。差別很大。而且在循環或某些重復執行的動作中不要去創建String對象,因為String對象是要用StringBuffer對象來處理的,一個String對象應該是產生了 3個對象(大概是這樣:))。
2.字元串length()方法來取得字元串長度的時候不要把length放到循環中,可以在循環外面對其取值。(包括vector的size方法)。特別是循環次數多的時候,盡量把length放到循環外面。
int size = xmlVector.size();
for (int i = 2; i < size; i++) {
。。。
}
3 寫代碼的時候處理內存溢出
try{
//do sth
....
}catch (outofmemoryerror e){//可以用一個共通函數來執行.
system.out.print (「no memory! 」);
system.gc();
//do sth again
....
} 4.對於頻繁申請內存和釋放內存的操作,還是自己控制一下比較好,但是System.gc()的方法不一定適用,最好使用finallize強制執行或者寫自己的finallize方法。 Java 中並不保證每次調用該方法就一定能夠啟動垃圾收集,它只不過會向JVM發出這樣一個申請,到底是否真正執行垃圾收集,一切都是個未知數。

Ⅸ java出現outofmemoryerror的原因有哪些

第一種OutOfMemoryError: PermGen space
發生這種問題的原意是程序中使用了大量的jar或class,使java虛擬機裝載類的空間不夠,與Permanent Generation space有關。解決這類問題有以下兩種辦法:
1. 增加java虛擬機中的XX:PermSize和XX:MaxPermSize參數的大小,其中XX:PermSize是初始永久保存區域大小,XX:MaxPermSize是最大永久保存區域大小。如針對tomcat6.0,在catalina.sh 或catalina.bat文件中一系列環境變數名說明結束處(大約在70行左右) 增加一行:
JAVA_OPTS=" -XX:PermSize=64M -XX:MaxPermSize=128m"
如果是windows伺服器還可以在系統環境變數中設置。感覺用tomcat發布sprint+struts+hibernate架構的程序時很容易發生這種內存溢出錯誤。使用上述方法,我成功解決了部署ssh項目的tomcat伺服器經常宕機的問題。
2. 清理應用程序中web-inf/lib下的jar,如果tomcat部署了多個應用,很多應用都使用了相同的jar,可以將共同的jar移到tomcat共同的lib下,減少類的重復載入。這種方法是網上部分人推薦的,我沒試過,但感覺減少不了太大的空間,最靠譜的還是第一種方法。

第二種OutOfMemoryError: Java heap space
發生這種問題的原因是java虛擬機創建的對象太多,在進行垃圾回收之間,虛擬機分配的到堆內存空間已經用滿了,與Heap space有關。解決這類問題有兩種思路:
1. 檢查程序,看是否有死循環或不必要地重復創建大量對象。找到原因後,修改程序和演算法。
我以前寫一個使用K-Means文本聚類演算法對幾萬條文本記錄(每條記錄的特徵向量大約10來個)進行文本聚類時,由於程序細節上有問題,就導致了Java heap space的內存溢出問題,後來通過修改程序得到了解決。
2. 增加Java虛擬機中Xms(初始堆大小)和Xmx(最大堆大小)參數的大小。如:set JAVA_OPTS= -Xms256m -Xmx1024m

第三種OutOfMemoryError:unable to create new native thread
這種錯誤在Java線程個數很多的情況下容易發生,我暫時還沒遇到過,發生原意和解決辦法可以參考:http://hi..com/hexiong/blog/item/16dc9e518fb10c2542a75b3c.html

Ⅹ 如何分析java.lang.outofmemoryerror

Java.lang.OutOfMemoryError是java.lang.VirtualMachineError的子類。在堆耗盡內存的時候,jvm會拋出Java.lang.OutOfMemoryError。這個錯誤大多數出現在當你去創建一個對象,但是在堆中卻不能為這個對象分配足夠多空間的時候。而且在java
api文檔中,並沒有對這個錯誤做大量的解釋。

OutOfMemoryError的類型
在java中有兩種主要的OutOfMemoryError類型:
(1) Java.lang.OutOfMemoryError: Java heap space
(2) Java.lang.OutOfMemoryError: PermGen space
盡管它們都發生在內存耗盡的情況下,但它們之間是相當不同的,它們的解決辦法也是各不一樣。

兩種OutOfMemoryError之間的區別

如果你熟悉堆的歷代版本和垃圾收集器的工作原理,並且知道到新的,老的和永久的堆空間,那麼你將會非常容易解決OutOfMemoryError錯誤。永久的堆空間用於存儲jvm相關類,方法和其他實體的字元串池和各種元數據。因為大多數jvm默認的Perm

Space(永久的堆空間)的大小是64M左右,所以如果你的工程里有太多的類或者數量巨大的字元串的話,那麼很容易就會耗盡內存。需要指出的一點是它並不依賴」
Xmx」(譯者注:
-Xms 指JVM初始分配的堆內存,-Xmx 指 JVM最大允許分配的堆內存)的值,所以不管你的堆空間多麼大,一樣會耗盡Perm
Space。好的辦法是你可以根據工程的需要通過JVM的選項指定永久堆空間的大小,即"-XX:PermSize" and
"-XX:MaxPermSize"。
一個很小的事情是要記得在指定堆的Perm Space(永久的堆空間)的大小的時候需要用」=」來分離參數名稱和值,但在指定堆得最大值的時候是不需要「=」的,正如下面的例子一樣:
Export JVM_ARGS="-Xmx1024m -XX:MaxPermSize=256m"

"java.lang.OutOfMemoryError:
PermGen"的另一個原因是類載入器造成的內存泄漏,它經常出現在web伺服器和應用伺服器中,例如tomcat, webshere,
glassfish or
weblogic。在應用伺服器中,不同的類載入器用於載入不同的web應用,以便在相同的伺服器上部署和取消部署一個應用而且不會影響其他的應用程序。但是當取消部署的時候,如果容器持有類載入器已經載入的類的引用,那麼這個類和相關的類就不會被垃圾回收器回收。如果你部署和取消部署你的應用很多次,那麼很快PermGen
space就會被填滿。"java.lang.OutOfMemoryError:
PermGen」在我們的上一個項目中的tomcat里已經被發現多次,但是這個問題的解決辦法實在是令人捉摸不透。因為你首先知道哪個類引起了內存泄露,然後你才能修正它。這個問題的另一個原因是應用啟動了一些線程,但是當取消部署的時候,這些線程並沒有退出。

這只是一些臭名昭著的類載入器造成內存泄露的例子,任何人在編寫載入類和取消載入類的代碼的時候都要非常小心以避免這些問題。你也可以使用visualgc
監測PermGen space,這個工具會展示PermGen space的使用情況圖表,你可以看到PermGen
space是怎樣並且何時增長的。我建議在得出任何結論之前先使用這個工具。
關於"java.lang.OutOfMemoryError:
PermGen"的原因,我們發現另一個更加無知但有趣的是對於 JVM 的參數
"-Xnoclassgc"的介紹。這個選項用於避免載入和取消載入一些已經沒有被引用的類,這樣可以避免因為頻繁的載入和取消載入而影響性能。但是在J2EE環境中使用這個選項是很危險的,因為許多框架,例如struts,spring等使用反射機制去創建類,並且會頻繁的部署和取消部署,如果上一個引用沒有被清除,那麼很快PermGen
space就會被耗盡。這個例子也說明一些時候錯誤的JVM參數或配置也會引起OutOfMemoryError錯誤。
所以結論是不要在J2EE環境中使用"-Xnoclassgc",尤其是在應用伺服器上。

Tomcat解決Java.lang.OutOfMemoryError: PermGen space錯誤的辦法

對於tomcat6.0及其以上版本,提供了內存泄漏偵測的能力。它可以通過web應用視圖展示一些偵測到的平常的內存泄漏問題,例如web應用中的ThreadLocal內存泄漏,JDBC驅動注冊,RMI
,LogFactory和線程等。你可以在htp://wiki.apache.org/tomcat/MemoryLeakProtection
查看具體的細節,也可以通過tomcat提供的管理程序偵測內存泄漏。你如果想在web應用程序上檢驗內存泄漏問題,使用tomcat是個不錯的主意。

如何解決java.lang.OutOfMemoryError: Java heap space

1)
解決OutOfMemoryError的簡單方法是通過指定JVM參數"-Xmx512M"來指定最大的堆空間,這種方法效果立竿見影。當我使用eclipse,maven,ant編譯工程遇到OutOfMemoryError的時候,我更喜歡使用這種辦法。這里有一個增加JVM堆空間的例子,建議為你的程序增加堆空間的時候最好保持-Xmx
相比-Xms 是1:1或者1:1.5的比例。
例: export JVM_ARGS="-Xms1024m -Xmx1024m"
2)
第二種解決辦法是很困難的,當你擁有的內存並不多或者在你增加了堆內存但是你依然會遇到OutOfMemoryError錯誤時,這種情況下你可能想要去分析你的應用程序並且尋找內存泄漏的原因。你可以使用Eclipse
Memory Analyzer來檢查heap mp,或者可以使用Netbeans,
Jprobe等這些分析工具。這種方法比較困難,需要花費大量時間去分析找出內存泄漏的原因。

如何解決java.lang.OutOfMemoryError: PermGen space

正如前面講到的一樣,java.lang.OutOfMemoryError: PermGen
space發生在永久堆內存耗盡的情況下。要修正這個情況,需要通過JVM選項 "-XX:MaxPermSize"來增加Perm
space的最大大小,也可以通過"-XX:PermSize"指定Perm space的初始大小。同時設置這兩個值,可以避免在Perm
Space重置大小的時候發生完全的垃圾回收。下面是設置初始化和最大值的例子:
export JVM_ARGS="-XX:PermSize=64M -XX:MaxPermSize=256m"

有時候java.lang.OutOfMemoryError是莫名其妙的,這種情況下分析是最終的解決辦法。盡管你有增加堆內存的空間的自由,但還是建議遵循內存管理實踐,在編碼的時候將沒用的引用設置為null。以上我對OutOfMemoryError的全部理解,我也在其他的一些帖子中努力寫出java關於查找內存泄漏的文章和使用分析器的方法。希望你也能分享解決OutOfMemoryError的觀點。
注意:
對於tomcat6.0及其以上版本,提供了內存泄漏偵測的能力。它可以通過web應用視圖展示一些偵測到的平常的內存泄漏問題,例如web應用中的ThreadLocal內存泄漏,JDBC驅動注冊,RMI
,LogFactory和線程等。你可以在htp://wiki.apache.org/tomcat/MemoryLeakProtection
查看具體的細節,也可以通過tomcat提供的管理程序偵測內存泄漏。你如果想在web應用程序上檢驗內存泄漏問題並且找到PermGen
space造成的OutOfMemoryError的原因,使用tomcat是個不錯的主意。

調查修正OutOfMemoryError的工具

Java.lang.OutOfMemoryError是一種你需要做大量的調查才能找到根本原因的錯誤。沒有對內存工具的足夠了解,你不可能做某些事情,例如查找哪個對象在佔用內存,佔用了多少內存,以及找到可怕的內存泄漏等等。這里我列出一些免費的工具可以幫助你分析堆的使用情況,以及造成OutOfMemoryError的罪魁禍首。

1)Visualgc
Visualgc代表Visual
Garbage Collection Monitoring Tool 。你可以將它用於你的hostspot
JVM。Visualgc最大的優勢是能生動展現出各種關鍵數據,包括類載入器,垃圾回收和JVM編譯器性能數據。
JVM被識別是通過虛擬機的標識符,稱為: vmid。你可以在這了解更多關於visualgc和vmid的東西。

2)Jmap
Jmap是來自JDK6的命令行工具,它允許你將堆的內存轉儲信息保存到文件中。而且很方便使用,如:jmap -mp:format=b,file=heapmp 6054
這里指定的內存轉儲的文件名稱是heapmp,6054是java進程的PID。你可以通過"ps -ef」或者windows任務管理器或者「jps」工具(Java Virtual Machine Process Status Tool)查找PID.

3) Jhat
Jhat之前被稱為hat (heap analyzer tool),現在它是JDK6的一部分,你可
以使用Jhat去分析"jmap"生成的文件。Jhat也是一個命令行工具,你可以在windows命令行這樣使用它,如: jhat -J-Xmx256m heapmp
這里它會分析「heapmp」文件中的內存問題。當你啟動Jhat後,它就會讀取內存轉儲文件,並且在http埠監聽。只需要通過瀏覽器進入埠,你就可以開始分析內存轉儲文件中的對象。Jhat默認監聽7000埠。

4)Eclipse memory analyzer
Eclipse memory analyzer
(MAT)是來自eclipse基金會的一個分析java堆內存的工具。它能幫助你找到類載入器的泄漏,內存泄漏和減少內存消耗。你可以使用MAT分析內存轉儲中數以百萬計的對象,也可以幫助你提取懷疑的內存泄漏。

閱讀全文

與javaoutofmemory相關的資料

熱點內容
程序員看不懂怎麼辦 瀏覽:271
linux操作系統題 瀏覽:765
單片機無符號數加法 瀏覽:227
應用隱藏加密怎麼關閉 瀏覽:269
汽車空調的壓縮機電線有什麼用 瀏覽:429
電腦加密圖片如何取消加密 瀏覽:340
慧凈電子51單片機視頻 瀏覽:343
javamap賦值 瀏覽:165
什麼app可以玩掌機游戲 瀏覽:46
java簡單聊天室 瀏覽:462
通用汽車編程軟體 瀏覽:432
一級抗震框架梁箍筋加密區規定是多少 瀏覽:974
教你如何把安卓手機變成蘋果 瀏覽:11
app編譯分類 瀏覽:323
怎麼用伺服器的資源包 瀏覽:199
oa軟體手機登陸伺服器地址 瀏覽:289
androidrtp打包 瀏覽:723
信息被加密碼了怎麼辦 瀏覽:420
彈出光碟命令 瀏覽:517
kdj公式源碼分享 瀏覽:355