有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓在java中一个字符串可以保存的最大数据量是多少?

我知道这可能是一个真正的noobish问题,但我发现没有好的可靠资源,我可以得到这些信息

在Android应用程序中,我试图通过继续向数据追加更多数据来保存字符串中的数据。最后,当用户关闭应用程序或点击“保存”按钮时,我将其记录到数据日志中。csv文件

我想知道一个简单的字符串在java中可以保存多少数据,这样当字符串数据类型耗尽分配的内存时,应用程序不会崩溃。 顺便说一句,我试着对我的应用程序进行压力测试,无论我在一个字符串中存储了多少数据,它似乎都运行良好

平硐


共 (3) 个答案

  1. # 1 楼答案

    {a1}在{a2}问题中得到答复

    You should be able to get a String of length Integer.MAX_VALUE (always 2147483647 (231 - 1) by the Java specification, the maximum size of an array, which the String class uses for internal storage) or half your maximum heap size (since each character is two bytes), whichever is smaller.

    但是,对于字符串的串联序列,应该使用StringBuilder,它是为这种目的而创建的

  2. # 2 楼答案

    这可能会受到应用程序可用堆大小的限制。这可能因手机型号和运营商/手机生产商而异。对于Android设备,答案here列出了各种手机型号的最大堆大小;它们的范围从16 MB到256 MB

    请注意,Java将字符串存储为UTF-16代码,因此每个字符占用两个字节。无论您是直接附加字符串还是使用StringBuilder(更好),有时都需要两倍的内存:一个用于存储现有字符串,另一个用于在需要扩展时存储新字符串/缓冲区

    综合考虑,最大字符串长度可能为400万到6400万个字符,具体取决于手机(远低于理论最大长度231-1)

  3. # 3 楼答案

    由于Stringlength()方法返回一个int值,因此该方法返回的最大长度将是整数。最大值为2^31-1(约20亿)

    理论上,你可以有一个2147483647个字符的字符串。我认为你不应该需要更多

    然而,正如@TedHopp在评论中指出的,并在他的回答中发布的那样,Android系统限制了你的堆空间,低至16MB。因此,实际上,您永远无法达到理论极限,并且将使用400-6400万字符范围内的某个字符串达到最大值