我想用正則表達式來解析一個巨大的String largeString
。matcher.group的內存分配()
我使用matcher.group()
獲得largeString
的子串。我的問題是:
matcher.group()返回一個新的String
對象,或者它只返回一個子字符串引用到largeString
?
據我所知定義子字符串只分配一個指針和3個實例的內存。我想保留largeString
用於其他目的,所以我寧願保留子字符串實例,而不是創建新的String
。
我想用正則表達式來解析一個巨大的String largeString
。matcher.group的內存分配()
我使用matcher.group()
獲得largeString
的子串。我的問題是:
matcher.group()返回一個新的String
對象,或者它只返回一個子字符串引用到largeString
?
據我所知定義子字符串只分配一個指針和3個實例的內存。我想保留largeString
用於其他目的,所以我寧願保留子字符串實例,而不是創建新的String
。
這在某種程度上已經在別處得到了回答。
自Java 7u6以來,所有的子串都是它們自己的String
對象。所以你不會再爲16個字節分配內存,你會爲整個String
對象分配內存。
信用:https://stackoverflow.com/a/14193606/1159805
編輯:這是解釋爲什麼變化所提出的建議的副本:http://mail.openjdk.java.net/pipermail/core-libs-dev/2012-May/010257.html
@fge:有關你的'CharSequence'事情的一個問題......我想。 – aliteralmind