內(nèi)存上:
單例模式執(zhí)行的時候需要new 一個對象出來存儲在堆棧里面拿愧,而靜態(tài)方法不需要凶伙,它不依賴于對象(普通方法是Object.method而靜態(tài)方法是class.method),但是他也是需要內(nèi)存的苍匆,它是以代碼塊來存儲
生命周期:
靜態(tài)方法的類會在代碼編譯的時候就被加載刘急,靜態(tài)方法中產(chǎn)生的對象,會隨著靜態(tài)方法執(zhí)行完畢而釋放掉浸踩,而且執(zhí)行類中的靜態(tài)方法時叔汁,不會實例化靜態(tài)方法所在的類。
如果用單例模式, 產(chǎn)生的那一個唯一的實例检碗,會一直在內(nèi)存中据块,不會被GC清除的(原因是靜態(tài)的屬性變量不會被GC清除),除非整個應(yīng)用退出了JVM
執(zhí)行效率:
靜態(tài)方法與實例方法折剃,在加載時機(jī)和占用內(nèi)存上另假,靜態(tài)方法和實例方法是一樣的,在類型第一次被使用時加載怕犁。調(diào)用的速度基本上沒有差別边篮。
但是從日志打印來看,個人感覺還是靜態(tài)方法在執(zhí)行效率上快一點(diǎn)奏甫。