轉自:http://joe5456536.blog.163.com/blog/static/8537477320117136658629/html
http://www.cnblogs.com/devinzhang/archive/2012/04/27/2473570.html算法
我知道靜態變量的使用要很當心,由於它在每一個對象中是共享的。可是對於靜態方法個人認識只侷限於下面:設計模式
● 生命週期(Lifecycle):安全
靜態方法(Static Method)與靜態成員變量同樣,屬於類自己,在類裝載的時候被裝載到內存(Memory),不自動進行銷燬,會一直存在於內存中,直到JVM關閉。併發
非靜態方法(Non-Static Method)又叫實例化方法,屬於實例對象,實例化後纔會分配內存,必須經過類的實例來引用。不會常駐內存,當實例對象被JVM 回收以後,也跟着消失。 函數
靜態方法的使用效率比非靜態方法的效率高。工具
按照上面的概念,只要內存夠用,均可以使用靜態的。使用靜態方法會帶來什麼問題呢this
● 線程安全spa
靜態方法是共享代碼段,靜態變量是共享數據段。既然是「共享」就有併發(Concurrence)的問題。線程
非靜態方法是針對肯定的一個對象的,因此不會存在線程安全的問題。
靜態方法和實例方法是同樣的,在類型第一次被使用時加載。調用的速度基本上沒有差異。