Java實例的內(nèi)存是分配在堆區(qū)域當中的,而棧區(qū)域當中只保存了引用,當實例不再使用的時候則進行垃圾回收。程序運行的時候,堆區(qū)就變成了垃圾回收的重點區(qū)域,如果實例的數(shù)量較多的時候,就會出現(xiàn)性能問題。減少實例在堆當中分配內(nèi)存無疑是最有效的優(yōu)化方式。
JVM虛擬機會針對實例進行逃逸分析,簡單來說就是分析其作用域,如果實例對象沒有成員方法外的任何引用指向那么就未發(fā)生逃逸。而未發(fā)生逃逸的實例,將被分配到棧區(qū)域,生命周期隨著線程消亡,也就不用垃圾回收來釋放其內(nèi)存。從而降低堆內(nèi)存分配,減少垃圾回收頻率,提高垃圾效率。