程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> heap-string類型數據的存儲(菜鳥學習)

heap-string類型數據的存儲(菜鳥學習)

編輯:編程解疑
string類型數據的存儲(菜鳥學習)

String str =“dfgdth”;
無線循環str += str +new Random().next(888888)+Random().next(9999999)會出現堆溢出 +=改為=就不會,求告知為什麼?

最佳回答:


+= 是將隨機獲得的數字與str進行拼接,如果無限循環,str內的字符將無限增長(其實不止如此,每次+=原str將變成垃圾,內存消耗是很恐怖的,只不過GC會回收罷了,但str指向的內存GC不會回收),最終內存溢出。
= 是將隨機獲得的數字賦值給str,由於字符串的不可變性,原str將變成垃圾,Java垃圾回收器會在適當的時機將其從內存中清理掉,所以不會引起內存溢出。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved