|
|
1
6
除非您的字节数组大于2GB(Java的最大正值)
如果您的字节数组长度需要超过2GB,那么您就做错了,尤其是因为这远远超过了JVM的默认最大堆化。。。 |
|
|
2
1
签名int不会是你的主要问题。假设你有一根40亿长的绳子。您需要一个至少为4GB的字节缓冲区,一个至少为4GB的字节[]。将其转换为字符串时,至少需要8GB(每个字符2字节)和StringBuilder来构建它。(至少为8 GB) 所有您需要的,24 GB的处理1字符串。即使你有很多内存,你也不会得到很多这样大小的字符串。 另一种方法是将长度视为有符号,如果无符号,则视为错误,因为在任何情况下都没有足够的内存来处理字符串。即使要处理一个长度为20亿(2^31-1)的字符串,您也需要12 GB才能以这种方式将其转换为字符串。 |
|
|
3
1
但是,即使在一个块中处理这么多也太多了——如果遇到足够大的字符串,它将完全破坏性能,并使您的程序在大多数机器上失败,并出现OutOfMemory错误。 您应该做的是将任何字符串处理成合理大小的块,比如说一次处理几兆字节。那么,您可以处理的大小没有实际限制。 |
|
4
0
我想你可以实施 CharSequence 在一辆小货车上。这将允许您防止“字符串”出现在堆上,尽管大多数处理字符的实用程序实际上都需要字符串。即使这样,字符序列也有一个限制。它希望大小以int形式返回。 subSequence(...) 返回普通字符序列。) |
|
Ben · 统计向量中的单词在字符串中出现的频率 1 年前 |
|
|
bear_525 · 从列中删除中间名和首字母,并保存在单独的列中 1 年前 |
|
|
asdfadf · 为什么具有相同内存值的字符串和整数打印方式不同? 1 年前 |
|
|
user764754 · 防止多行原始字符串文字中出现新行字符 1 年前 |
|
|
Bogaso · 从列表中返回与模式匹配的元素 1 年前 |
|
|
Jasco · 如何使用VBA提取两个相似字符之间的字符串中的单词? 1 年前 |