java static final 靜態成員變量佔用內存html
package test.others; public class Test { private String sNormal; private static String sStatic; private void funNormal(){ } private static void funStatic(){ } void main(String argv[]){ Test test = new Test(); } }
如上,sStatic, funNormal, funStatic 是在虛擬機加載類 Test 時就加入到類 Test 方法區的內存中(爲它們申請內存)。而在 new Test() 時才把 sNormal 放到 test 指向的堆中(爲它申請內存)。java
所以,類 static 成員變量,類方法及類 static 方法都只佔用一分內存。並不會由於 new 了多個類實例而增長。而只有類的普通成員變量纔會每一個實例一份。spa
實際上,這與 C++ 是同樣的。.net
參考:http://www.blogjava.net/Jack2007/archive/2008/05/21/202018.htmlcode