亚洲色精品一区二区三区_真实国产老熟女粗口对白_亚洲日本VA午夜在线电影_二三四五六七无产乱码_国产SUV精品一区二区四_国产很色很黄很大爽的视频_男女啪啪免费体验区_人妻夜夜爽天天爽爽一区_少妇人妻在线视频_亚洲午夜性猛春交XXXX,夜晚做剧烈双人运动的软件,国产成人夜色在线影院,女子自慰喷白浆A片免费观看网站

內(nèi)存溢出的定義和原因 如何解決內(nèi)存溢出問題

本文章由注冊用戶 溫暖·生活家 上傳提供 評論 發(fā)布 糾錯/刪除 版權聲明 0
摘要:內(nèi)存溢出通俗理解就是內(nèi)存不夠,,通常在運行大型軟件或游戲時,軟件或游戲所需要的內(nèi)存遠遠超出了你主機內(nèi)安裝的內(nèi)存所承受大小,,就叫內(nèi)存溢出,。此時軟件或游戲就運行不了,,系統(tǒng)會提示內(nèi)存溢出,,有時候會自動關閉軟件,,重啟電腦或者軟件后釋放掉一部分內(nèi)存又可以正常運行該軟件,。那么你知道內(nèi)存溢出的原因嗎,?應該如何解決內(nèi)存溢出的問題呢,?下面就和小編一起來看看詳細知識吧!

一,、內(nèi)存溢出的定義和原因

定義

內(nèi)存溢出是指應用系統(tǒng)中存在無法回收的內(nèi)存或使用的內(nèi)存過多,,最終使得程序運行要用到的內(nèi)存大于虛擬機能提供的最大內(nèi)存。為了解決Java中內(nèi)存溢出問題,,我們首先必須了解Java是如何管理內(nèi)存的,。Java的內(nèi)存管理就是對象的分配和釋放問題。在Java中,,內(nèi)存的分配是由程序完成的,,而內(nèi)存的釋放是由垃圾收集器(GarbageCollection,GC)完成的,,程序員不需要通過調(diào)用GC函數(shù)來釋放內(nèi)存,,因為不同的JVM實現(xiàn)者可能使用不同的算法管理GC,有的是內(nèi)存使用到達一定程度時,,GC才開始工作,,也有定時執(zhí)行的,,有的是中斷式執(zhí)行GC。但GC只能回收無用并且不再被其它對象引用的那些對象所占用的空間,。Java的內(nèi)存垃圾回收機制是從程序的主要運行對象開始檢查引用鏈,,當遍歷一遍后發(fā)現(xiàn)沒有被引用的孤立對象就作為垃圾回收。

原因

1,、內(nèi)存中加載的數(shù)據(jù)量過于龐大,,如一次從數(shù)據(jù)庫取出過多數(shù)據(jù)。

2,、集合類中有對對象的引用,,使用完后未清空,使得JVM不能回收,。

3,、代碼中存在死循環(huán)或循環(huán)產(chǎn)生過多重復的對象實體。

4,、使用的第三方軟件中的BUG,。

5,、啟動參數(shù)設定的過小,。

二、內(nèi)存溢出的解決問題

第一步,,就是修改JVM啟動參數(shù),,直接增加內(nèi)存。這一點看上去似乎很簡單,,但很容易被忽略,。JVM默認可以使用的內(nèi)存為64M,Tomcat默認可以使用的內(nèi)存為128MB,,對于稍復雜一點的系統(tǒng)就會不夠用,。在某項目中,就因為啟動參數(shù)使用的默認值,,經(jīng)常報“OutOfMemory”錯誤,。因此,-Xms,,-Xmx參數(shù)一定不要忘記加,。

第二步,檢查錯誤日志,,查看“OutOfMemory”錯誤前是否有其它異?;蝈e誤。在一個項目中,,使用兩個數(shù)據(jù)庫連接,,其中專用于發(fā)送短信的數(shù)據(jù)庫連接使用DBCP連接池管理,,用戶為不將短信發(fā)出,有意將數(shù)據(jù)庫連接用戶名改錯,,使得日志中有許多數(shù)據(jù)庫連接異常的日志,,一段時間后,就出現(xiàn)“OutOfMemory”錯誤,。經(jīng)分析,,這是由于DBCP連接池BUG引起的,數(shù)據(jù)庫連接不上后,,沒有將連接釋放,,最終使得DBCP報“OutOfMemory”錯誤。經(jīng)過修改正確數(shù)據(jù)庫連接參數(shù)后,,就沒有再出現(xiàn)內(nèi)存溢出的錯誤,。

查看日志對于分析內(nèi)存溢出是非常重要的,通過仔細查看日志,,分析內(nèi)存溢出前做過哪些操作,,可以大致定位有問題的模塊。

第三步,,安排有經(jīng)驗的編程人員對代碼進行走查和分析,,找出可能發(fā)生內(nèi)存溢出的位置。重點排查以下幾點:

1,、檢查代碼中是否有死循環(huán)或遞歸調(diào)用,。

2、檢查是否有大循環(huán)重復產(chǎn)生新對象實體,。

3,、檢查對數(shù)據(jù)庫查詢中,是否有一次獲得全部數(shù)據(jù)的查詢,。一般來說,,如果一次取十萬條記錄到內(nèi)存,就可能引起內(nèi)存溢出,。這個問題比較隱蔽,,在上線前,數(shù)據(jù)庫中數(shù)據(jù)較少,,不容易出問題,,上線后,數(shù)據(jù)庫中數(shù)據(jù)多了,,一次查詢就有可能引起內(nèi)存溢出,。因此對于數(shù)據(jù)庫查詢盡量采用分頁的方式查詢。

4,、檢查List,、MAP等集合對象是否有使用完后,,未清除的問題。List,、MAP等集合對象會始終存有對對象的引用,,使得這些對象不能被GC回收。

第四步,,使用內(nèi)存查看工具動態(tài)查看內(nèi)存使用情況,。某個項目上線后,每次系統(tǒng)啟動兩天后,,就會出現(xiàn)內(nèi)存溢出的錯誤,。這種情況一般是代碼中出現(xiàn)了緩慢的內(nèi)存泄漏,用上面三個步驟解決不了,,這就需要使用內(nèi)存查看工具了,。

內(nèi)存查看工具有許多,比較有名的有:Optimizeit Profiler,、JProbeProfiler,、JinSight和Java1.5的Jconsole等。它們的基本工作原理大同小異,,都是監(jiān)測Java程序運行時所有對象的申請,、釋放等動作,將內(nèi)存管理的所有信息進行統(tǒng)計,、分析,、可視化。開發(fā)人員可以根據(jù)這些信息判斷程序是否有內(nèi)存泄漏問題,。一般來說,一個正常的系統(tǒng)在其啟動完成后其內(nèi)存的占用量是基本穩(wěn)定的,,而不應該是無限制的增長的,。持續(xù)地觀察系統(tǒng)運行時使用的內(nèi)存的大小,可以看到在內(nèi)存使用監(jiān)控窗口中是基本規(guī)則的鋸齒形的圖線,,如果內(nèi)存的大小持續(xù)地增長,,則說明系統(tǒng)存在內(nèi)存泄漏問題。通過間隔一段時間取一次內(nèi)存快照,,然后對內(nèi)存快照中對象的使用與引用等信息進行比對與分析,,可以找出是哪個類的對象在泄漏。

通過以上四個步驟的分析與處理,,基本能處理內(nèi)存溢出的問題,。當然,在這些過程中也需要相當?shù)慕?jīng)驗與敏感度,,需要在實際的開發(fā)與調(diào)試過程中不斷積累,。

聲明:以上方法源于程序系統(tǒng)索引或網(wǎng)民分享提供,,僅供您參考使用,不代表本網(wǎng)站的研究觀點,,證明有效,,請注意甄別內(nèi)容來源的真實性和權威性。申請刪除>> 糾錯>>

網(wǎng)站提醒和聲明
本站為注冊用戶提供信息存儲空間服務,,非“MAIGOO編輯”,、“MAIGOO榜單研究員”、“MAIGOO文章編輯員”上傳提供的文章/文字均是注冊用戶自主發(fā)布上傳,,不代表本站觀點,,版權歸原作者所有,如有侵權,、虛假信息,、錯誤信息或任何問題,請及時聯(lián)系我們,,我們將在第一時間刪除或更正,。 申請刪除>> 糾錯>> 投訴侵權>> 網(wǎng)頁上相關信息的知識產(chǎn)權歸網(wǎng)站方所有(包括但不限于文字、圖片,、圖表,、著作權、商標權,、為用戶提供的商業(yè)信息等),,非經(jīng)許可不得抄襲或使用。
提交說明: 快速提交發(fā)布>> 查看提交幫助>> 注冊登錄>>
最新評論
相關推薦
內(nèi)存頻率有哪些 怎么看 內(nèi)存頻率有什么意義
內(nèi)存可謂是最便宜,、最簡單也是普遍最有效的硬件升級方案之一,。如今主流的DDR3內(nèi)存多為1333MHz和1600MHz的頻率,高端內(nèi)存的頻率可達2133MHz,、2400MHz甚至更高,。目前,市面上大多數(shù)Haswell主板都支持內(nèi)存頻率最高達到3000MHz,,這直接導致各大內(nèi)存廠商前仆后繼地開始發(fā)布頻率達到3000MHz的高頻內(nèi)存,。一般來說,內(nèi)存頻率越高,,總體性能越好,。那么除此之外內(nèi)存頻率還要什么意義呢?我們又怎么查看內(nèi)存的頻率高低呢,?下面就和小編一起看看吧,!
電腦怎么加內(nèi)存條 電腦內(nèi)存升級有什么用
內(nèi)存條是CPU可通過總線尋址,并進行讀寫操作的電腦部件,。內(nèi)存條在個人電腦歷史上曾經(jīng)是主內(nèi)存的擴展,。隨著電腦軟,、硬件技術不斷更新的要求,內(nèi)存條已成為讀寫內(nèi)存的整體,。在我們?nèi)粘2僮麟娔X的過程中,,為了提高電腦的運行內(nèi)存,會選擇增加一個內(nèi)存條,,那么,,電腦怎么加內(nèi)存條?電腦內(nèi)存升級有什么用,?趕緊和小編一起來了解一下吧,。
雙通道內(nèi)存有什么好處 雙通道內(nèi)存和單通道的區(qū)別
雙通道內(nèi)存技術其實是一種內(nèi)存控制和管理技術,它依賴于芯片組的內(nèi)存控制器發(fā)生作用,,在理論上能夠使兩條同等規(guī)格內(nèi)存所提供的帶寬增長一倍,。和單通道的最大的區(qū)別在于內(nèi)存條單通道指需要一條內(nèi)存條,而雙通道需要最少2條內(nèi)存……下面,,來看詳細介紹,!
服務器內(nèi)存的類型 服務器內(nèi)存插法原則
服務器內(nèi)存也是內(nèi)存的一種,主要有ECC 內(nèi)存,、Reg-DIMM內(nèi)存和FB-DIMM內(nèi)存,。和其它內(nèi)存條不一樣的是,服務器內(nèi)存條是使用在網(wǎng)絡服務器等設備上的內(nèi)存,,而普通的內(nèi)存條是用在計算機主機內(nèi)的存儲設備,。而由于服務器內(nèi)存條是使用在服務器上的內(nèi)存設備,它的插入方法原則自然也會和普通內(nèi)存條有所不同,。下面就來一起看下詳細介紹吧,。
電腦內(nèi)存在哪里看 怎么查看內(nèi)存條的型號和頻率
電腦的內(nèi)存是決定其運行速度和性能的重要因素之一,了解電腦內(nèi)存的情況對于提高電腦的運行效率,、選擇合適的應用程序和進行系統(tǒng)維護都至關重要,。電腦內(nèi)存在哪里看?怎么查看內(nèi)存條的型號和頻率,?下面一起來了解下電腦內(nèi)存的相關知識吧。