实际可用空间时的 java 堆空间
Posted
技术标签:
【中文标题】实际可用空间时的 java 堆空间【英文标题】:java heap space when space is actually available 【发布时间】:2018-07-18 23:37:57 【问题描述】:我正在尝试在 AMQ (5.15.2) 上发送 BytesMessage,但即使内存明显可用,我也会在堆空间异常中运行。这里是
byte[] contcentBuilder = new Byte[1000*1000*1];
Array.fill(contentBuilder, (byte) 1);
BytesMessage message = session.createBytesMessage();
for(int i=0;i<150;i++)
message.writeBytes(contentBuilder);
contentBuilder=null;
producer.send(message); //here it gets the heap space memory error
Runtime.getRunTime().freeMemory(); //this is in debug
在该错误中,可用内存超过 15Gb(我为此 VM 分配了 16Gb)。
欢迎任何想法,谢谢。
编辑:我基本上很笨,问题出在 AMQ 方面,增加它在 bin/win64/wrapper.conf 中的内存就可以了。感谢所有回答的人。
新来的我不知道如何关闭这个答案!
【问题讨论】:
你确定这还能编译吗?byte[]
与 Byte[]
不同。
此外,我做了一些帐户,该数组分配的内存约为 0.0009 GB "matisse.net/bitcalc/…" 这让我认为问题不在于分配给 VM 的内存
@GianfrancescoAurecchia,实际上是 1.5 亿字节。如果我了解BytesMessage
的作用。
所以我会说在执行命令时使用-Xmx,让我知道它是怎么回事
对不起,我没有重视循环,在所有情况下只占用 0.1396 GB
【参考方案1】:
还是我,问题出在 AMQ 方面,增加它在 bin/win64/wrapper.conf 中的内存就可以了。感谢所有回答的人。
【讨论】:
以上是关于实际可用空间时的 java 堆空间的主要内容,如果未能解决你的问题,请参考以下文章
OutOfMemoryError:尝试读取大文件时的 Java 堆空间