我收到了这个错误:
Exception in thread "543" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2894)
at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:117)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:407)
at java.lang.StringBuffer.append(StringBuffer.java:241)
在使用此命令启动的应用程序中:
java -Xms1024M -Xmx3072M -jar MyJar.jar >> /var/log/MyLog.log 2>&1 &
而操作系统报告 27% 的 4GB RAM 正在使用中。
根据我的计算,应该有将近 2GB 的可用堆空间。是不是因为某种原因,JVM 没有从一开始就增加堆大小?
实际可用的堆空间是否有任何可能导致此错误?
请注意,这一切都在 1.6JVM 上。具体来说:java-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.x86_64
编辑:正在构建的字符串不能长 2GB。它是由固定长度的对象数组构成的,最终长度不能超过几百个字符。