matcher.group()的内存分配

时间:2014-03-26 18:25:12

标签: java android regex memory-management substring

我想使用正则表达式解析一个巨大的String largeString

我正在使用matcher.group()来获取largeString的子字符串。我的问题是:

matcher.group()是否返回一个新的String对象,或者只返回对largeString的子字符串引用?

据我所知,定义substring只为指针和3 int个实例分配内存。我希望将largeString用于其他目的,因此我更愿意保留子字符串实例,而不是创建新的String

1 个答案:

答案 0 :(得分:2)

在某种程度上,这已在其他地方得到解答。

从Java 7u6开始,所有子字符串都是它们自己的String对象。所以你不会只为16个字节分配内存,你将为整个String对象分配内存。

信用:https://stackoverflow.com/a/14193606/1159805

编辑:以下是该提案的副本,解释了更改的原因:http://mail.openjdk.java.net/pipermail/core-libs-dev/2012-May/010257.html