Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么';一根绳子的长度是多少?_Java_String - Fatal编程技术网

Java 什么';一根绳子的长度是多少?

Java 什么';一根绳子的长度是多少?,java,string,Java,String,可能重复: 一个字符串最多可以容纳多少个字符。(java)堆内存是限制或更小的Integer.MAX\u值。堆内存是限制或更小的Integer.MAX\u值。很多。具体来说,似乎没有任何限制,尽管你最终会失去记忆。有关更多信息或缺少信息,请参阅JVM规范: 编辑:看起来Java(语言)允许您将字符串设置为任何单个变量的长度,这可能是Java分配的heapspace的数量。(请参阅-Xmx参数) 很多。具体来说,似乎没有任何限制,尽管你最终会失去记忆。有关更多信息或缺少信息,请参阅JVM规范:

可能重复:


一个字符串最多可以容纳多少个字符。(java)

堆内存是限制或更小的Integer.MAX\u值。

堆内存是限制或更小的Integer.MAX\u值。

很多。具体来说,似乎没有任何限制,尽管你最终会失去记忆。有关更多信息或缺少信息,请参阅JVM规范:


编辑:看起来Java(语言)允许您将字符串设置为任何单个变量的长度,这可能是Java分配的heapspace的数量。(请参阅-Xmx参数)

很多。具体来说,似乎没有任何限制,尽管你最终会失去记忆。有关更多信息或缺少信息,请参阅JVM规范:

编辑:看起来Java(语言)允许您将字符串设置为任何单个变量的长度,这可能是Java分配的heapspace的数量。(请参阅-Xmx参数)

理论上:2^31-1=2147483647(~2G字节)。 实际上:虚拟内存的结束

理论上:2^31-1=2147483647(~2G字节)。 实际上:虚拟内存的结束


由于
String
基于底层
char[]
,数组索引是
int
值,因此
String
的最大长度是
Integer.MAX\u值
,尽管在此之前您可能会遇到内存问题。

因为
String
基于底层
char[]
,数组索引是
int
值,
String
的最大长度是
Integer.MAX\u VALUE
,尽管在此之前您可能会遇到内存问题。

dup:答案确实相同。对不起,重复的家伙!杜普:答案确实是一样的。对不起,重复的家伙!(和女孩)不一定。我不知道各种JVM处理大型对象的能力如何(例如
char[Integer.MAX\u VALUE]
),但运行一个拥有那么多堆内存的JVM肯定是可能的。。。但你仍然会受到字符串大小的限制。@Jon Skeet我不明白jvm如何处理比堆内存大的对象,我是说它将存储在哪里?我的观点不是关于比堆内存大的对象,而是想知道jvm是否能处理一个接近4GB的对象。例如,我知道CLR对每个对象有(或有)1GB的限制。您可以在JVM中使用超过4GB的内存(如果您有内存的话),但不一定要创建一个这么大的对象。@Jon Skeet完全同意您的pointlife.java:您可以直接从操作系统请求内存。有些内存管理器对比内存页大得多的对象执行此操作。其优点是,内存在使用后可以返回操作系统。由于碎片化,堆内存通常无法返回到操作系统,但我从未听说过JVM会这样做,不一定。我不知道各种JVM处理大型对象的能力如何(例如
char[Integer.MAX\u VALUE]
),但运行一个拥有那么多堆内存的JVM肯定是可能的。。。但你仍然会受到字符串大小的限制。@Jon Skeet我不明白jvm如何处理比堆内存大的对象,我是说它将存储在哪里?我的观点不是关于比堆内存大的对象,而是想知道jvm是否能处理一个接近4GB的对象。例如,我知道CLR对每个对象有(或有)1GB的限制。您可以在JVM中使用超过4GB的内存(如果您有内存的话),但不一定要创建一个这么大的对象。@Jon Skeet完全同意您的pointlife.java:您可以直接从操作系统请求内存。有些内存管理器对比内存页大得多的对象执行此操作。其优点是,内存在使用后可以返回操作系统。由于碎片化,堆内存通常无法返回到操作系统,但我从未听说过JVM会这样做。