Runtime.getRuntime().maxMemory()返回的是以字节为单位的最大可用内存大小。2792882176字节大约是2.6GB。\n\n无法new一个600兆的byte[]数组并出现java.lang.OutOfMemoryError异常的原因是,你的Java堆空间不足以容纳这个数组。堆空间是Java虚拟机用来分配对象实例的一块内存区域,它的大小是有限制的。默认情况下,Java堆空间的大小是根据系统的物理内存来自动设定的,一般为系统内存的1/4或1/8,可以通过设置-Xmx参数来调整该值。\n\n如果你想要创建一个需要600兆空间的数组,你可以通过增加Java堆空间的大小来解决。例如,可以使用命令java -Xmx800m YourClass来将最大堆空间设置为800兆。这样,你就可以成功地创建一个大小为600兆的byte[]数组了。

Java堆空间不足导致无法创建大数组:Runtime.getRuntime().maxMemory()详解及解决方案

原文地址: https://www.cveoy.top/t/topic/pzK0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录