『壹』 內存溢出有何解決方法
- -樓主是win7 32位系統?如果是……請照下面所示。。。。打開開始菜單,在搜索欄裡面輸入CMD,在查找到結果中找到CMD.exe,按右鍵以管理員身份運行。
在彈出的黑色命令框中輸入
bcdedit /set increaseuserva 3072
提示成功後重啟電腦。
若對其他游戲產生副作用,
可以輸入恢復指令
bcdedit /deletevalue increaseuserva
此方法的解決原理:32位WIN7默認單項程序最大隻可以調用2G物理內存,超過就會溢出。這個命令是將其提升到3G,最大限度的解決內存溢出問題。
祝君- -游戲愉快。
『貳』 內存溢出錯誤怎麼解決
引起內存不足、內存溢出的 原因 有很多種,常見的有以下幾種:
1.內存中載入的數據量過於龐大,如一次從資料庫取出過多數據;
2.集合類中有對對象的引用,使用完後未清空,使得JVM不能回收;
3.代碼中存在死循環或循環產生過多重復的對象實體;
4.使用的第三方軟體中的BUG;
5.啟動參數內存值設定的過小;
內存溢出的解決方案 :
第一步 ,修改JVM啟動參數,直接增加內存。(-Xms,-Xmx參數一定不要忘記加。)
第二步 ,檢查錯誤日誌,查看「OutOfMemory」錯誤前是否有其它異常或錯誤。
第三步 ,對代碼進行走查和分析,找出可能發生內存溢出的位置。
重點排查以下幾點:
1.檢查對資料庫查詢中,是否有一次獲得全部數據的查詢。一般來說,如果一次取十萬條記錄到內存,就可能引起內存溢出。這個問題比較隱蔽,在上線前,資料庫中數據較少,不容易出問題,上線後,資料庫中數據多了,一次查詢就有可能引起內存溢出。因此對於資料庫查詢盡量採用分頁的方式查詢。
2.檢查代碼中是否有死循環或遞歸調用。
3.檢查是否有大循環重復產生新對象實體。
4.檢查對資料庫查詢中,是否有一次獲得全部數據的查詢。一般來說,如果一次取十萬條記錄到內存,就可能引起內存溢出。這個問題比較隱蔽,在上線前,資料庫中數據較少,不容易出問題,上線後,資料庫中數據多了,一次查詢就有可能引起內存溢出。因此對於資料庫查詢盡量採用分頁的方式查詢。
5.檢查List、MAP等集合對象是否有使用完後,未清除的問題。List、MAP等集合對象會始終存有對對象的引用,使得這些對象不能被GC回收。
第四步 ,使用內存查看工具動態查看內存使用情況。
『叄』 伺服器內存溢出怎麼解決
1. java.lang.OutOfMemoryError: Java heap space ----JVM Heap(堆)溢出
JVM在啟動的時候會自動設置JVM Heap的值,其初始空間(即-Xms)是物理內存的1/64,最大空間(-Xmx)不可超過物理內存。
可以利用JVM提供的-Xmn -Xms -Xmx等選項可進行設置。Heap的大小是Young Generation和Tenured Generaion之和。
在JVM中如果98%的時間是用於GC,且可用的Heap size不足2%的時候將拋出此異常信息。
解決方法:手動設置JVM Heap(堆)的大小。
2. java.lang.OutOfMemoryError: PermGen space ---- PermGen space溢出。
PermGen space的全稱是Permanent Generation space,是指內存的永久保存區域。
為什麼會內存溢出,這是由於這塊內存主要是被JVM存放Class和Meta信息的,Class在被Load的時候被放入PermGen space區域,它和存放Instance的Heap區域不同,sun的 GC不會在主程序運行期對PermGen space進行清理,所以如果你的APP會載入很多CLASS的話,就很可能出現PermGen space溢出。
解決方法: 手動設置MaxPermSize大小
3. java.lang.StackOverflowError ---- 棧溢出
棧溢出了,JVM依然是採用棧式的虛擬機,這個和C和Pascal都是一樣的。函數的調用過程都體現在堆棧和退棧上了。
調用構造函數的 「層」太多了,以致於把棧區溢出了。
通常來講,一般棧區遠遠小於堆區的,因為函數調用過程往往不會多於上千層,而即便每個函數調用需要 1K的空間(這個大約相當於在一個C函數內聲明了256個int類型的變數),那麼棧區也不過是需要1MB的空間。通常棧的大小是1-2MB的。
通常遞歸也不要遞歸的層次過多,很容易溢出。
解決方法:修改程序。
『肆』 內存不足、內存溢出的原因和解決方法
如果你的系統虛擬內存太低,可以滑鼠右擊「我的電腦」選擇「屬性→高級→性能下設置→高級→打開虛擬內存設置」,可以重新設置最大值和最小值,按物理內存的1.5~2倍來添加數值,也可以更改虛擬內存的存放位置,可以設置放到其他容量較大的硬碟分區,讓系統虛擬內存有充分的空間,讓系統運行更快。
虛擬內存太低有三種解決辦法:
1. 自定義的虛擬內容的容量(系統默認是自動)太小,可以重新劃分大小。
2. 系統所在的盤(一般是C盤)空餘的容量太小而運行的程序卻很大,並且虛擬內存通常被默認創建在系統盤目錄下,我們通常可以刪除一些不用的程序,並把文檔圖片以及下載的資料等有用文件移動到其他盤中,並清理「回收站」,使系統盤保持1GB以上的空間,或者將虛擬內存定義到其他空餘空間多的盤符下。
3. 系統盤空餘的容量並不小,但因為經常安裝、下載軟體,並反復刪除造成文件碎片太多,也是容易造成虛擬內存不足的原因之一,虛擬內存需要一片連續的空間,盡管磁碟空餘容量大,但沒有連續的空間,也無法建立虛擬內存區。可以用磁碟工具整理碎片。
虛擬內存不足的九大原因及解決方法系統提示「內存不足」的九大原因及解決方法
一、剪貼板佔用了太多的內存
實際上,剪貼板是內存中的一塊臨時區域,當你在程序中使用了「復制」或「剪切」命令後,Windows將把復制或剪切的內容及其格式等信息暫時存儲在剪貼板上,以供「粘貼」使用。如果當前剪貼板中存放的是一幅圖畫,則剪貼板就佔用了不少的內存。這時,請按下述步驟清除剪貼板中的內容,釋放其佔用的內存資源: 1.單擊「開始」,指向「程序」或「所有程序」,指向「附件」,指向「系統工具」,然後單擊「剪貼板查看程序」,打開「剪貼板查看程序」窗口。2.在「編輯」菜單上,單擊「刪除」命令。3.關閉「剪貼板查看程序」窗口。
為了與Microsoft Office程序提供的多重剪貼板相區分,上述所說的剪貼板,常被我們稱為系統剪貼板。如果你正在使用Micros OftOffice程序,而且使用了其多重剪貼板功能,那麼你應清空「Office剪貼板」上的項目,方法是:在「Office剪貼板」任務窗格(OfficeXP)或工具欄(Office2000)上,單擊「全部清空」或「清空『剪貼板』」。當清空「Office剪貼板」時,系統剪貼板也將同時被清空
二、打開的程序太多
如果同時打開的文檔過多或者運行的程序過多,就沒有足夠的內存運行其他程序。這時,對於多文檔界面(MDl)程序,如Word、Excel等,請關閉當前文檔外的所有文檔,並退出當前未使用的程序,然後或許你就能夠繼續執行因「內存不足」而被中斷的任務。
三、重新啟動計算機
如果只退出程序,並不重新啟動計算機,程序可能無法將內存資源歸還給系統。請重新啟動計算機以釋放系統資源,然後再次運行程序或執行被中斷的任務。
四、自動運行的程序太多
如果在啟動Windows時自動運行的程序太多,那麼,即使重新啟動計算機,也沒足夠的內存用來運行其它程序。
(一)確定設置為自動運行的程序是否太多
1.單擊「開始」,然後單擊「運行」。
2.在「打開」框中,鍵入「Msconfig」,單擊「確定」按鈕,打開「系統配置實用程序」窗口。
3.單擊「常規」選項卡,選中「選擇性啟動」復選鈕,清除「處理Win.ini文件」復選框和「載入啟動組項目」復選框。
4.單擊「確定」按鈕,當系統提示重新啟動計算機時,請單擊「是」按鈕。
重新啟動電腦後,如果內存不足的問題已經解決,你就可以將計算機配置為啟動時不打開任何程序。
(二)配置計算機不自動打開任何程序
1.恢復在Msconfig中所作的更改,方法是:在「系統配置實用程序」窗口,單擊「常規」選項卡,選擇「正常啟動」,單擊「確定」按鈕,然後重新啟動計算機。
2.刪除「啟動」文件夾中的所有快捷方式
①單擊「開始」,指向「設置」,然後單擊「任務欄和開始菜單」,系統彈出「任務欄屬性」對話框。
②單擊「開始菜單」選項卡,單擊「自定義」,再單擊「刪除」按鈕。
③單擊「啟動」文件夾旁的加號,以顯示設置為自動運行的程序列表。如果「啟動」文件夾旁沒有加號「+」,則表明沒有設置為自動運行的程序,請單擊「關閉」按鈕以終止此過程。
④單擊「啟動」文件夾中的每個快捷方式,然後單擊「刪除」按鈕。此操作將從「開始」菜單中刪除快捷方式,但並不從硬碟中刪除相應的程序。對於「啟動」文件夾中的每個快捷方式,重復該步驟。
⑤單擊「關閉」按鈕。
⑥單擊「確定」按鈕。
3.禁用從Win.ini文件載入的所有程序
①如上所述打開「系統配置實用程序」窗口。
②單擊「Win.ini」選項卡,雙擊「[windows]」,然後清除「Load=」和「Run=」復選框。
③單擊「確定」按鈕,當系統提示重新啟動計算機時,請單擊「是」按鈕。
五、讓Windows管理虛擬內存設置
如果沒有設置讓Windows管理虛擬內存或者禁用虛擬內存,那麼計算機可能無法正常工作,也可能收到「內存不足」的消息,或在運行某程序時出現相同的錯誤消息。
1.單擊「開始」,單擊「設置」,單擊「控制面板」,然後雙擊「系統」。
2.在「系統屬性」對話框中,單擊「性能」選項卡,然後單擊「虛擬內存」按鈕。
3.選中「讓Windows管理虛擬內存設置—(推薦)」選項,將計算機中可作為虛擬內存使用的硬碟空間量設置為默認值。此時,虛擬內存分頁「win386.swp」能夠根據實際內存的使用情況動態縮小和放大,最小容量為0,最大容量為硬碟的全部可用空間。
4.單擊「確定」按鈕。
六、增加可用磁碟空間
由於Windows以虛擬內存分頁文件的格式使用硬碟空間以模擬RAM(),所以,盡管已設置為讓Windows管理虛擬內存,但是當虛擬內存分頁文件所在的驅動器(默認為Windows系統所在的硬碟分區)沒有足夠的空間時,仍會出現「內存不足」的錯誤。此時,請執行以下一項或多項操作,增加Windows虛擬內存分頁文件所在驅動器上的可用空間:
1.清空回收站,方法是:在桌面上,右鍵單擊「回收站」,再單擊「清空回收站」。 2.從磁碟中刪除臨時文件,方法是:打開「Windows資源管理器」或「我的電腦」窗口,右鍵單擊要釋放其空間的磁碟,然後單擊「屬性」,在「常規」選項卡上,單擊「磁碟清理」按鈕,選中要刪除的不需要的文件前的復選框(如圖3),可以閱讀列表下面區域中每個文件類型的說明,單擊「確定」按鈕。
3.從磁碟中刪除過期的文件或已存檔的文件。
4.刪除從未使用過的所有文件。
七、程序文件被毀壞
如果僅僅是使用某個程序時,系統提示內存不足,而其他程序可以正常運行,那麼可能的原因是該程序文件被毀壞,從而導致內存問題。然而Windows並沒有確切地提示表明該程序已損壞,所以請嘗試刪除並重新安裝該程序,然後重新運行該程序。如果系統不再提示內存不足,那麼說明原程序文件確實被損壞。
八、使用內存優化軟體
內存優化軟體有很多,比如RAM Idle和Memo Kit就是比較出色的兩個。這些軟體都可以設置自動清空剪貼板、釋放被關閉程序未釋放的內存、對Win386.swp文件進行重新組織等,從而免除你手工操作的麻煩,達到自動釋放內存的目的,不妨一試!
九、查殺病毒
系統感染電腦病毒也是導致內存不足的罪魁禍首,當系統出現「內存不足」的錯誤時,請使用最新的防毒軟體查殺病毒,或者在清除電腦病毒之後,就解決了「內存不足」的問題。
『伍』 假設出現了內存溢出或者棧溢出的話,怎麼去解決這些問題
內存溢出,一般是指堆棧溢出,通常有以下可能及解決方法: 1、程序本身有bug。這種情況,通常出在程序的調試階段和beta測試版中。換正式版一般可以解決。 2、系統太新,程序太老。比如xp時代的程序在win10下運行,就經常會出現這種情況。
『陸』 WAS 中JAVA內存溢出的問題應該按照什麼思路來解決
�故荖ative thread無法創建,前者用MaxPermSize調整(IBM JDK沒這個參數),後者調小最大堆大小或者Xss調整每個線程分配內存的大小。 如果是常見的堆的溢出,確保OutOfMemory時能生成heapmp文件,用Dump analyzer或者MDD4J分析mp文件,找到堆中佔用空間總數最大的(或者數量最多的)對象。然後調整堆范圍到一個比較小的區間,比如256M~384M,重新啟動伺服器,在運行1小時候手動做一次heapmp,運行4小時後做一次heapmp,運行8小時候做一次(間隔僅作參考)。然後分析一下三者的區別,看看哪個對象數量增長很多,佔用空間增加很大。結合OutOfMemory時候的分析,應該能鎖定問題的源頭。 huweihong: 內存溢出是使用WAS時會經常遇到的問題。 1.現在WAS的控制台上打開詳細垃圾回收。一旦出現OOM的錯誤時,會在nativeerr.log中有記錄,也可以從這個日誌中看出內存分配的情況。 2。參見hashei的回帖 把相關日誌收集齊,使用ISA中的相關工具進行日誌分析,會看到一些提示的。 有的時候內存溢出是WAS自身引入的,可以看看是不是有相關的補丁包。 還有多數都是自己開發程序的問題,使用的對象沒有釋放。這個就要具體情況具體分析了。 其實解決所有的問題的思路就是:大膽假設,小心求證。我的經驗。:) 呵呵,其實我感覺95%以上的OOM發生都是和代碼本身的質量有關系的, 以下是我的一點小思路,不知道對大家是否有幫助: OOM的情況,必定會產生宕機日誌,所以,首先從分析宕機日誌開始. 分析工具很多,根據側重點不同進行選取即可. 一般情況下無非就是兩重情況:大對象和內存泄露. 於是,趕緊查查業務代碼,是那些地方產生的. 一個好的框架會幫你節省不少體力活的. 不過我感覺一般的大對象大都是RS引起的,不小心查了幾萬行數據又不做分頁,不宕機都不行啊。
『柒』 內存溢出和內存泄漏的區別,產生原因以及解決方案
內存溢出 out of memory,是指程序在申請內存時,沒有足夠的內存空間供其使用,出現out of memory;比如申請了一個integer,但給它存了long才能存下的數,那就是內存溢出。
內存泄露 memory leak,是指程序在申請內存後,無法釋放已申請的內存空間,一次內存泄露危害可以忽略,但內存泄露堆積後果很嚴重,無論多少內存,遲早會被佔光。
memory leak會最終會導致out of memory!
內存溢出就是你要求分配的內存超出了系統能給你的,系統不能滿足需求,於是產生溢出。
內存泄漏是指你向系統申請分配內存進行使用(new),可是使用完了以後卻不歸還(delete),結果你申請到的那塊內存你自己也不能再訪問(也許你把它的地址給弄丟了),而系統也不能再次將它分配給需要的程序。一個盤子用盡各種方法只能裝4個果子,你裝了5個,結果掉倒地上不能吃了。這就是溢出!比方說棧,棧滿時再做進棧必定產生空間溢出,叫上溢,棧空時再做退棧也產生空間溢出,稱為下溢。就是分配的內存不足以放下數據項序列,稱為內存溢出.
以發生的方式來分類,內存泄漏可以分為4類:
1. 常發性內存泄漏。發生內存泄漏的代碼會被多次執行到,每次被執行的時候都會導致一塊內存泄漏。
2. 偶發性內存泄漏。發生內存泄漏的代碼只有在某些特定環境或操作過程下才會發生。常發性和偶發性是相對的。對於特定的環境,偶發性的也許就變成了常發性的。所以測試環境和測試方法對檢測內存泄漏至關重要。
3. 一次性內存泄漏。發生內存泄漏的代碼只會被執行一次,或者由於演算法上的缺陷,導致總會有一塊僅且一塊內存發生泄漏。比如,在類的構造函數中分配內存,在析構函數中卻沒有釋放該內存,所以內存泄漏只會發生一次。
4. 隱式內存泄漏。程序在運行過程中不停的分配內存,但是直到結束的時候才釋放內存。嚴格的說這里並沒有發生內存泄漏,因為最終程序釋放了所有申請的內存。但是對於一個伺服器程序,需要運行幾天,幾周甚至幾個月,不及時釋放內存也可能導致最終耗盡系統的所有內存。所以,我們稱這類內存泄漏為隱式內存泄漏。
從用戶使用程序的角度來看,內存泄漏本身不會產生什麼危害,作為一般的用戶,根本感覺不到內存泄漏的存在。真正有危害的是內存泄漏的堆積,這會最終消耗盡系統所有的內存。從這個角度來說,一次性內存泄漏並沒有什麼危害,因為它不會堆積,而隱式內存泄漏危害性則非常大,因為較之於常發性和偶發性內存泄漏它更難被檢測到
內存溢出的原因以及解決方法
引起內存溢出的原因有很多種,小編列舉一下常見的有以下幾種:
1.內存中載入的數據量過於龐大,如一次從資料庫取出過多數據;
2.集合類中有對對象的引用,使用完後未清空,使得JVM不能回收;
3.代碼中存在死循環或循環產生過多重復的對象實體;
4.使用的第三方軟體中的BUG;
5.啟動參數內存值設定的過小
內存溢出的解決方案:
第一步,修改JVM啟動參數,直接增加內存。(-Xms,-Xmx參數一定不要忘記加。)
第二步,檢查錯誤日誌,查看「OutOfMemory」錯誤前是否有其它異常或錯誤。
第三步,對代碼進行走查和分析,找出可能發生內存溢出的位置。
重點排查以下幾點:
1.檢查對資料庫查詢中,是否有一次獲得全部數據的查詢。一般來說,如果一次取十萬條記錄到內存,就可能引起內存溢出。這個問題比較隱蔽,在上線前,資料庫中數據較少,不容易出問題,上線後,資料庫中數據多了,一次查詢就有可能引起內存溢出。因此對於資料庫查詢盡量採用分頁的方式查詢。
2.檢查代碼中是否有死循環或遞歸調用。
3.檢查是否有大循環重復產生新對象實體。
4.檢查對資料庫查詢中,是否有一次獲得全部數據的查詢。一般來說,如果一次取十萬條記錄到內存,就可能引起內存溢出。這個問題比較隱蔽,在上線前,資料庫中數據較少,不容易出問題,上線後,資料庫中數據多了,一次查詢就有可能引起內存溢出。因此對於資料庫查詢盡量採用分頁的方式查詢。
5.檢查List、MAP等集合對象是否有使用完後,未清除的問題。List、MAP等集合對象會始終存有對對象的引用,使得這些對象不能被GC回收。
第四步,使用內存查看工具動態查看內存使用情況
『捌』 WAS頻繁內存溢出問題求助
你把伺服器的內存設置大一點。可以在catalina.bat裡面用:setJAVA_OPTS=-Xms30m-Xmx512m這樣的方法來為其設置分配內存的大小。或者你的eclipse或myeclipse裡面通過配置伺服器的配置項來實現也行。
『玖』 was不明原因宕機,求教各位高手解決
1、有生成系統core文件嗎,如果是異常宕機一般會生成一個系統core文件,如果生成的是javacore、heapmp文件那應該是內存溢出OutOfMemeryError,
2、如果是內存溢出的話就需要先分析一下native_stderr.log文件,看一下JVM堆內存泄漏;或者看一下內存溢出是gc操作申請的是不是一個對象,如果是那就是大對象導致內存溢出,需要看一下javacore文件Current Thread的堆棧;如果JVM堆內存是耗盡了,再gc操作也回收不來可用內存了,那就是JVM堆內存耗盡導致的內存溢出,需要分析heapmp文件,看一下JVM堆內存中都是什麼對象。我的伺服器是用小鳥雲,穩定性比較好不容易出錯。
『拾』 內存溢出的問題有什麼解決的方法嘛
虛擬內存不足你可以先設置一下充足的虛擬內存
基本設置方法是 右鍵點「我的電腦」,左鍵點「屬性」,點選「高級」選項卡,點「性能」里的「設置」按鈕,再選「高級」選項卡,點下面的「更改」按鈕,所彈出的窗口就是虛擬內存設置窗口,一般默認的虛擬內存是從小到大的一段取值范圍,這就是虛擬內存變化大小的范圍,最好給它一個固定值,這樣就不容易產生磁碟碎片了,具體數值根據你的物理內存大小來定,一般為物理內存的1.5到2倍,如內存為256M,那麼應該設置256*1.5=384M,或者乾脆512M。
設置方法如下: 假設內存為256M,虛擬內存放在D盤,先要將默認的清除,保持C盤為選中狀態,單選「無分頁文件(N)」再按「設置」按鈕,此時C盤旁的虛擬內存就消失了,然後選中D盤,單選「自定義大小」,在下面的「初始大小」和「最大值」兩個方框里都添上512,再點一下「設置」按鈕,會看到D盤的旁邊出現了「512-512」的字樣,這樣就說明設置好了,再一路確定,最終,系統會要重新啟動,重啟一下,便完成了設置