我们可以初始化大小为1447891223的String数组吗?

我正在尝试以下代码

String[] buffer = new String[1447891223];
Arrays.fill(buffer, "0.0");

The above code gives me java.lang.OutOfMemoryError: Java heap space

有什么方法可以最佳地完成上述方法吗?

我的sts.ini文件具有以下配置

-startup
plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.300.v20150602-1417
-product
org.springsource.sts.ide
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
512M
-vmargs
-Dosgi.requiredJavaVersion=1.7
-Xms1024m
-XX:MaxPermSize=512m
-Xverify:none
-Dorg.eclipse.swt.browser.IEVersion=10001
-Xmx4000m
评论
  • ~迷糊娃~
    ~迷糊娃~ 回复

    好吧,您真的需要那么多String对象吗?您将必须至少使用约6GB的内存才能指向约15亿个字符串。也许您想要一个15亿个字符的字符串?那会少一点,但不会太多。

    另外,您还必须提供JVM参数-Xmx来增加JVM可用内存的大小。

  • miguel
    miguel 回复

    You should be able to initialize the array of size 1447891223 with minimum -Xms9g memory. Set one of your VM args as -Xms9g or -Xmx9g

    import java.util.Arrays;
    
    public class BigArray {
    
        public static void main(String[] args) {
            String[] buffer = new String[1447891223];
            Arrays.fill(buffer, "0.0");
        }
    }