安卓在java中一个字符串可以保存的最大数据量是多少?
我知道这可能是一个真正的noobish问题,但我发现没有好的可靠资源,我可以得到这些信息
在Android应用程序中,我试图通过继续向数据追加更多数据来保存字符串中的数据。最后,当用户关闭应用程序或点击“保存”按钮时,我将其记录到数据日志中。csv文件
我想知道一个简单的字符串在java中可以保存多少数据,这样当字符串数据类型耗尽分配的内存时,应用程序不会崩溃。 顺便说一句,我试着对我的应用程序进行压力测试,无论我在一个字符串中存储了多少数据,它似乎都运行良好
平硐
# 1 楼答案
{a1}在{a2}问题中得到答复
但是,对于字符串的串联序列,应该使用StringBuilder,它是为这种目的而创建的
# 2 楼答案
这可能会受到应用程序可用堆大小的限制。这可能因手机型号和运营商/手机生产商而异。对于Android设备,答案here列出了各种手机型号的最大堆大小;它们的范围从16 MB到256 MB
请注意,Java将字符串存储为UTF-16代码,因此每个字符占用两个字节。无论您是直接附加字符串还是使用StringBuilder(更好),有时都需要两倍的内存:一个用于存储现有字符串,另一个用于在需要扩展时存储新字符串/缓冲区
综合考虑,最大字符串长度可能为400万到6400万个字符,具体取决于手机(远低于理论最大长度231-1)
# 3 楼答案
由于String类length()方法返回一个int值,因此该方法返回的最大长度将是整数。最大值为2^31-1(约20亿)
理论上,你可以有一个2147483647个字符的字符串。我认为你不应该需要更多
然而,正如@TedHopp在评论中指出的,并在他的回答中发布的那样,Android系统限制了你的堆空间,低至16MB。因此,实际上,您永远无法达到理论极限,并且将使用400-6400万字符范围内的某个字符串达到最大值