java.lang.OutOfMemoryError: Java heap space,heapspace
一:起因
(1)學習IT的人,不論是寫前端還是後台;有時候需要對資料進行清洗處理,例如,資料庫日誌分析。
(2)處理資料的大小由MB 到 GB,在到TB,最後導致處理的每一個檔案都超過java jvm初始的heap
(3)對於單個檔案比較小的,並行要求不高的資料,我們可以通過更改JVM的初始參數進行解決 —— 但是這並不是根本的解決辦法。
(4)根本的解決辦法是hadoop分布式系統下的MapReduce
二:下面是針對(3)的處理辦法
(1)引起java.lang.OutOfMemoryError: Java heap space異常,可能是由JAVA的堆棧設定太小的原因
a: 若Eclipse 報 “Exception in thread "main" java.lang.OutOfMemoryError: Java heap space ”錯誤,可通過一下方法進行處理:首先, 開啟Eclipse軟體,選擇功能表列run,在二
級菜單中選擇 Debug Configurations,然後:在彈出的視窗中選擇(x)=arguments選項卡,VM arguments中輸入所需要的記憶體最大佔用量,比如輸入-Xmx800m即可。
b: myeclipse中console輸出控制台,輸出限定大小,可通過windows—Run/Debug—Console中的Console buffer size大小進行修改,這樣可以使得console的空間變成size大小。
將java處理過的內容輸出到一文字檔中,使用換行,不是"\n",而是"\r\n'(但是我用的“\n”貌似也沒有事情的)
c: 【附】MyEclipse的設定地址在run--->Open Run Dialog--->Arguments
(2)在D:/apache-tomcat-6.0.18/bin/catalina.bat最前面加入:set JAVA_OPTS=-Xms128m -Xmx512m
注意:只有startup.bat啟動tomcat,設定才會生效,如果利用windows的系統服務啟動tomcat服務,上面的設定就不生效了,
就是說set JAVA_OPTS=-Xms128m -Xmx512m沒起作用
因為eclipse裡預設的一個程式的jvm配置為:-Xms128m -Xmx512m,所以我們的處理耗記憶體比較大時需要手動調整一下,以便不會記憶體溢出。具體的設定方法為:
選中被啟動並執行類,點擊菜單‘run->run...’,選擇(x)=Argument標籤頁下的vm arguments框裡輸入 -Xmx512m, 儲存運行就ok了
在你的TOMCAT->右擊->OPEN->在SERVER OVERVIEW 中General 中 Open launch configurtion 單擊—>選擇Argument 把預設設定去掉,在VM argument 中加一句話 :
-Xms256M -Xmx1024M -XX:PermSize=64M -XX:MaxPermSize=128M
(3)在Eclilpse中修改啟動參數,在VM arguments 加入了-Xms128m -Xmx512m,設定如所示(這是針對所有的工程進行的配置,即對本eclipse下的JDK進行的配置) windows --》 preferences --》 JDK
問題解決。
下面的是針對某一個工程進行的配置 右擊工程 --》 runconfig --》 Arguments,僅僅針對這一個工程。
(4)問題的解決方案,遇到錯誤不要緊,關鍵是要心平氣和的解決。感覺如今的最大收穫就是它 了,遇到錯誤不在慌張不在浮躁不在無從下手,而是一步一步的調試,逐一的解決問題。不知道這算不算一種成長。