簡體   English   中英

字符串在java中可以容納的最大數據量

[英]max amount of data a String can hold in java

我已經在這里閱讀了這個答案,但是如果您繼續向同一個變量添加字符串會發生什么? 在重新獲取 max_value 之后。 假設計算機有足夠的資源來執行此操作。 例如:

 String s="";

 double n=Math.pow(2,32);

 for(int i=0;i<n;i++)
 {
   s=s+'x';
 }

好吧,我所做的是:

    public static void main(String args[])
    {
        String s = new String(new char[Integer.MAX_VALUE-1]);
        s = s + ".";
    }

我得到的是:

java.lang.OutOfMemoryError: Requested array size exceeds VM limit

從技術上講,限制是Integer.MAX_VALUE字符,但是,某些 JVM 實際上無法創建長度為Integer.MAX_VALUE的數組,因此您會發現實際限制是少幾個字符。

public static void main(String[] args) {
    for (int i = 0; i < 1000; i++) {
        try {
            char[] chars = new char[Integer.MAX_VALUE - i];
            System.out.println("Created new char[MAX_VALUE-" + i + "]");
            break;
        } catch (OutOfMemoryError oome) {
            if (i == 0)
                oome.printStackTrace();
        }
    }
}

在我的 Windows 10 Java 8 update 251 機器上打印

java.lang.OutOfMemoryError: Requested array size exceeds VM limit
    at A.main(A.java:12)

Created new char[MAX_VALUE-2]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM