閱讀587 返回首頁    go 阿裏雲 go 技術社區[雲棲]


從Java中String的subString函數說起

今天在用VisualVM查看進程的堆dump時,發現一些有意思的地方,見下圖:


在“OQL控製台”頁麵中可以看到“過度分配的字符串”,“布爾值太多”。

從這裏,可以看到一些有意思的地方。


有垃圾回收機製的語言通常有很多優化

1..String是不能改變的,所以subString通常是和原來的String使用的是同一份內存,不會有內存拷貝。

所以有可能會出現有一個小字符串占用了大內存的情況。


2.Boolean通常隻有兩個實例,一個是Boolean.TRUE,一個是Boolean.False。


3.Integer通常會有緩存,比如在Python中也有這樣的機製,貌似是緩存0到2000的整數

最後更新:2017-04-02 16:47:34

  上一篇:go android文件操作與圖片壓縮
  下一篇:go Android listView滑動刷新代碼(分頁功能)