1. 程式人生 > >[Unity優化]gc01:字符串常量池

[Unity優化]gc01:字符串常量池

http 負責 com unit 內存空間 mon 返回 分享 html

參考鏈接:

https://blog.csdn.net/qq826364410/article/details/87994993

https://www.cnblogs.com/qingsp/p/6907553.html

CLR是公共語言運行庫(Common Language Runtime),是一個運行時環境,它負責資源管理(內存分配和垃圾收集等)

CLR為了減少字符串對象的重復創建,其維護了一個特殊的內存,這段內存被稱為字符串常量池。字符串常量池不在堆中也不在棧中,是獨立的內存空間管理,在內存的常量區

字符串常量池是針對字符串常量的,當一個字符串常量要被創建時,CLR會去字符串常量池中找,如果存在相同內容的字符串對象,則將這個對象的引用返回;否則新的字符串對象被創建,然後將這個對象放入字符串常量池,並返回該引用

測試:

以下的情況只有在第一幀會觸發gc,之後都不會

1.字符串常量賦值

技術分享圖片

2.字符串常量拼接

技術分享圖片

3.字符串常量作為方法參數

技術分享圖片

以下的情況每幀都會觸發gc

1.

技術分享圖片

2.字符串變量和字符串常量進行拼接後會直接生成一個新的對象,繞過駐留池檢查

技術分享圖片

[Unity優化]gc01:字符串常量池