我知道这可能是一个非常愚蠢的问题,但我没有找到可以获取此信息的可靠资源。
在 Android 应用程序中,我试图通过继续附加更多数据来将数据保存在 String 中。最后,当用户关闭应用程序或点击“保存按钮”时,我将其记录到数据 .csv 文件中。
我想知道一个简单的字符串在java中可以保存多少数据?, 这样如果 String 数据类型用完分配的内存,应用程序就不会崩溃。顺便说一句,我尝试对我的应用程序进行压力测试,无论我在一个字符串中存储多少数据,它似乎都运行良好。
阿迪特
这可能会受到应用程序可用的堆大小的限制。这可能因手机型号和运营商/手机生产商而异。对于 Android 设备,这里的答案列出了各种手机型号的最大堆大小;它们的范围从 16 到 256 MB。
请注意,Java 将字符串存储为 UTF-16 代码,因此每个字符占用两个字节。无论您是直接附加字符串还是使用 StringBuilder(更好),您有时都需要两倍的内存:一个用于存储现有字符串,另一个用于在需要扩展时存储新的字符串/缓冲区。
综合考虑,最大字符串长度可能约为 4 到 6400 万个字符,具体取决于电话(远低于 2 31 -1 的理论最大值)。
您应该能够获得长度为 Integer.MAX_VALUE 的字符串(根据 Java 规范,数组的最大大小始终为 2147483647 (2 31 - 1),String 类用于内部存储)或最大堆大小的一半(因为每个字符是两个字节),以较小者为准。
但是,对于您的字符串连接序列,您应该使用为此目的而制作的StringBuilder 。