Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.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 - Fatal编程技术网

java字符串变量可以容纳多少大小

java字符串变量可以容纳多少大小,java,Java,我有一个包含一行数据的文件。文件大小为300MB 这个文件的数据作为一个字符串读取,并存储到一个字符串变量中。然后我使用这个变量进行查找 所以我的问题是java字符串变量能容纳这么重的字符串吗 我想可能会发生内存问题,但需要建议 请给出你的建议 谢谢 Java字符串只能容纳2147483647(2^31-1)个字符(取决于您的JVM)。所以如果你的绳子比这个大,你就得把绳子弄断。您可以分解字符串,并将每个值存储在数组、哈希映射或任何可行的数据结构中 对什么的建议?根本不清楚你在问什么。你最终会得

我有一个包含一行数据的文件。文件大小为300MB

这个文件的数据作为一个字符串读取,并存储到一个字符串变量中。然后我使用这个变量进行查找

所以我的问题是java字符串变量能容纳这么重的字符串吗

我想可能会发生内存问题,但需要建议

请给出你的建议


谢谢

Java字符串只能容纳2147483647(2^31-1)个字符(取决于您的JVM)。所以如果你的绳子比这个大,你就得把绳子弄断。您可以分解字符串,并将每个值存储在数组、哈希映射或任何可行的数据结构中

对什么的建议?根本不清楚你在问什么。你最终会得到每个UTF-16代码单元2个字节。。。例如,如果您的文件都是ASCII码,那么内存中将有一个600MB的字符串(充其量-取决于您读取文件的方式,底层的
char[]
可能会更大,这与
ArrayList
通常具有备用容量的方式相同)。是的,Java字符串可以存储这么大的字符串。是的,您可能会耗尽堆空间。有一些命令行选项允许您在启动JVM时指定最大堆空间量。这就是你想要的吗?我对这个问题的回答这是理论上的限制,但是由于数组是如何实现的,一些JVM上的实际限制稍微小一些。e、 g.整数。最大值为-1或-3。顺便说一句+1@kelly这是一道简单的数学题。1个字符=1个字节。MB中有1024KB,GB中有1024MB。。。数学也是如此:)@BlackHatSamurai除了在Java8中,1个字符使用2个字节的内存。在Java 9中,一个字符可能会使用1到3个字节。@PeterLawrey非常有用的信息!谢谢我想知道他们为什么要用这么多的内存来存储角色。我想我得调查一下:D@PeterLawrey这是有道理的。谢谢你的信息!