那些年掉過的內存溢出的坑:java.lang.OutOfMemoryError: Java heap space

   前段時間結果leader分給我一個調優調性能的任務:把100w的MP3

數據下載到本地並壓縮成zip包。然後我看了之前的舊的代碼,問題多多。我決定重新新方法。使用多線程下載,使用countDownLatch來控制主線程子線程次級線程的執行次序。當我把數據從十萬,五十萬,一百萬進行測試的時候,在五十萬的時候就報了這個錯誤,然後按照網上的修改了jvm運行內存,WebLogic的內存等等,五十萬勉強可以通過,當數據到達一百萬的時候還是報了內存溢出的錯誤。因爲不知道如何去調節內存了,而且按理說一百萬的數據不應該會佔太大的內存;所以決定從代碼中入手,發現了這個:

因爲這裏log在控制檯輸出了100萬的數據並且寫入log文件中;這就導致內存激增一直溢出。把這些大數據量的數據log註釋掉從新下載運行,然後沒有內存溢出了。問題解決。

總結:很多容易忽略的代碼很可能導致問題的出現,所以開始越到問題時候要好好排查,不要忽略那些認爲不會出錯的地方。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章