掃描二維碼關注

首頁 APP開(kāi)發小(xiǎo)程序開(kāi)發 微信公衆号 網站建設 營銷推廣 經典案列 産品服務 關于我們

“學習(xí)不僅是掌握知識”

向書(shū)本學習(xí),還要向實踐學習(xí)、向生活學習(xí)。消化已有(yǒu)知識,
而且要力求有(yǒu)所發現、有(yǒu)所發明(míng)、有(yǒu)所創造

java中OutOfMemoryError:PermGen space的(de)程序處理(lǐ)方法

2019/3/28 11:28:24

java中OutOfMemoryError:PermGen space的(de)程序處理(lǐ)方法

我們的(de)java程序在運行(xíng)時出現OutOfMemoryError: PermGen space有(yǒu)以下解決辦法:

1、盡早釋放(fàng)無用(yòng)對象的(de)引用(yòng)。好的(de)辦法是使用(yòng)臨時變量的(de)時候,讓引用(yòng)變量在退出活動域後,自動設置爲null,暗(àn)示垃圾收集器(qì)來收集該對象,防止發生内存洩露。

對于仍然有(yǒu)指針指向的(de)實例,jvm就不會(huì)回收該資源,因爲垃圾回收會(huì)将值爲null的(de)對象作爲垃圾,提高(gāo)GC回收機制(zhì)效率;

2、我們的(de)程序裏不可(kě)避免大(dà)量使用(yòng)字符串處理(lǐ),避免使用(yòng)String,應大(dà)量使用(yòng)StringBuffer,每一個(gè)String對象都(dōu)得獨立占用(yòng)内存一塊區域;

String str = "aaa";

String str2 = "bbb";

String str3 = str + str2;//假如(rú)執行(xíng)此次之後str ,str2以後再不被調用(yòng),那它就會(huì)被放(fàng)在内存中等待Java的(de)gc去回收,程序内過多的(de)出現這樣的(de)情況就會(huì)報上(shàng)面的(de)那個(gè)錯誤,建議在使用(yòng)字符串時能(néng)使用(yòng)StringBuffer就不要用(yòng)String,這樣可(kě)以省不少(shǎo)開(kāi)銷;


3、盡量少(shǎo)用(yòng)靜态變量,因爲靜态變量是全局的(de),GC不會(huì)回收的(de);

4、避免集中創建對象尤其是大(dà)對象,JVM會(huì)突然需要大(dà)量内存,這時必然會(huì)觸發GC優化系統内存環境;顯示的(de)聲明(míng)數組空間,而且申請數量還極大(dà)。

5、盡量運用(yòng)對象池技術(shù)以提高(gāo)系統性能(néng);生命周期長的(de)對象擁有(yǒu)生命周期短的(de)對象時容易引發内存洩漏,例如(rú)大(dà)集合對象擁有(yǒu)大(dà)數據量的(de)業(yè)務對象的(de)時候,可(kě)以考慮分(fēn)塊進行(xíng)處理(lǐ),然後解決一塊釋放(fàng)一塊的(de)策略。

6、不要在經常調用(yòng)的(de)方法中創建對象,尤其是忌諱在循環中創建對象。可(kě)以适當的(de)使用(yòng)hashtable,vector 創建一組對象容器(qì),然後從容器(qì)中去取那些對象,而不用(yòng)每次new之後又(yòu)丢棄

7、一般都(dōu)是發生在開(kāi)啓大(dà)型文(wén)件(jiàn)或跟數據庫一次拿了太多的(de)數據,造成 Out Of Memory Error 的(de)狀況,這時就大(dà)概要計(jì)算一下數據量的(de)最大(dà)值是多少(shǎo),并且設定所需最小(xiǎo)及最大(dà)的(de)内存空間值。
 


深圳市南山區南山街(jiē)道南海(hǎi)大(dà)道西(xī)桂廟路(lù)北陽光(guāng)華藝大(dà)廈1棟4F、4G-04

咨詢電話(huà):136 8237 6272
大(dà)客戶咨詢:139 0290 5075
業(yè)務QQ:195006118
技術(shù)QQ:179981967

更多可(kě)以了解的(de)信息

客戶案列
新聞資訊
資質榮譽
團隊風采
項目進度查詢

售前QQ咨詢
QQ溝通 項目QQ溝通

精銳軟件(jiàn)

Copyright© 2018-2023 深圳市無窮大軟件技術有限公司 All Rights Reserved. 京ICP證000000号 公安備案号:粵公網安備44030502009460号