從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