Java内存溢出是一个常见的问题,例如程序的运行结果如下图所示
- java.lang.OutOfMemoryError: Java heap space
- at java.util.Arrays.copyOf(Arrays.java:2882)
- at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100)
- at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:390)
- at java.lang.StringBuffer.append(StringBuffer.java:224)
- at slcx.com.WebPage.<init>(WebPage.java:67)
- at slcx.stock.gegu.baidu.ExtBdGgHisRecInfo.执行百度个股历史抓取(ExtBdGgHisRecInfo.java:199)
- at slcx.stock.gegu.baidu.ExtBdGgHisRecInfo.main(ExtBdGgHisRecInfo.java:272)
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2882)
at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:390)
at java.lang.StringBuffer.append(StringBuffer.java:224)
at slcx.com.WebPage.<init>(WebPage.java:67)
at slcx.stock.gegu.baidu.ExtBdGgHisRecInfo.执行百度个股历史抓取(ExtBdGgHisRecInfo.java:199)
at slcx.stock.gegu.baidu.ExtBdGgHisRecInfo.main(ExtBdGgHisRecInfo.java:272)
异常原因和解决方法:
Java的堆内存溢出了,可能是由于你的某个方法BUG导致的,比如构造了一个List,一次放入的数据过多,或者一次读取某个很大的文件,而没有使用缓存
根本的解决方法是查找导致溢出的方法,并修正(可以减少放入内存的内容)
另外有一个治标的方法:在WEB容器启动时加上内存参数:
-Xms512m -Xmx512m
————Java编程词典,程序员的好帮手。