Java matcher.group()的内存分配
我想使用正则表达式来解析一个最大的Java matcher.group()的内存分配,java,android,regex,memory-management,substring,Java,Android,Regex,Memory Management,Substring,我想使用正则表达式来解析一个最大的字符串 我正在使用matcher.group()。我的问题是: Do matcher.group()返回一个新的字符串对象,或者只返回对最大字符串的子字符串引用 据我所知,定义子字符串只为指针和3个int实例分配内存。我想保留最大的用于其他目的,因此我更喜欢保留子字符串实例,而不是创建新的字符串,这在某种程度上已经在其他地方得到了回答 自Java7U6以来,所有子字符串都是它们自己的String对象。因此,您不仅可以为16个字节分配内存,还可以为整个字符串对象分
字符串
我正在使用matcher.group()。我的问题是:
Do matcher.group()返回一个新的字符串
对象,或者只返回对最大字符串
的子字符串引用
据我所知,定义子字符串只为指针和3个int
实例分配内存。我想保留最大的用于其他目的,因此我更喜欢保留子字符串实例,而不是创建新的字符串,这在某种程度上已经在其他地方得到了回答
自Java7U6以来,所有子字符串都是它们自己的String
对象。因此,您不仅可以为16个字节分配内存,还可以为整个字符串对象分配内存
学分:
编辑:这是一份提案的副本,解释了为什么要进行更改:@fge:一个与你的CharSequence
有关的问题……我想。谢谢,我在看一篇老博文:p这意味着如果我想节省内存,比如说,我应该存储matcher.start()和end()?(只需2个int
)并稍后动态调用子字符串方法?@Ivan没错,但请记住,调用substring
将创建一个全新的String
对象。由于substring
处于动态,它们将临时使用,并将被垃圾收集。