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会这样做。