Java_heap_space
java.lang.OutOfMemoryError: Java heap space JVM記憶體設定
使用Java程式從資料庫中查詢大量的資料時出現異常:java.lang.OutOfMemoryError: Java heap space 在JVM中如果98%的時間是用於GC且可用的 Heap size 不足2%的時候將丟擲此異常資訊。 JVM堆的設定是指java程式執行過程中JVM可以調配使用的記憶體空間的設定.JVM在啟動的時候會自動設定Heap size的值,其初始空間(即-Xms)是實體記憶體的1/64,最大空間(-Xmx)是實體記憶體的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等選項可進行設定。
這個問題的根源是jvm虛擬機器的預設Heap大小是64M,可以通過設定其最大和最小值來實現.設定的方法主要是幾個.
可以在windows 更改系統環境變數加上 JAVA_OPTS && CATALINA_OPTS
JAVA_OPTS=-Xms1024m -Xmx2048m
CATALINA_OPTS=-Xms2048M -Xmx4096M
EX:
Variable name : CATALINA_OPTS
Variable value: =-Xms2048M -Xmx4096M
程式的寫法要注意要 close 資料流
IMAGEIO讀取JPEG文件
JPEG可以很好地壓縮圖像。但是在內存中,僅用於原始數據的BufferedImage通常每個像素需要4個字節,因此無論文件有多大,其大小均為6480 * 4320 * 4 = 112 MB。
參考
读写文件时内存溢出问题思考(OutOfMemoryError: Java heap space)_WolfShadow的博客-CSDN博客
JAVA遇到大批資料處理時會出現Java heap space的報錯的解決方案 - IT閱讀
How To Increase The Java Heap size in Tomcat Application Server | Aprentis
OutofMemory while reading JPEG file Using IMAGEIO (Performance forum at Coderanch)