(1)不要使用newBoolean()。
在許多情況下,布爾類型是必要的。比如JDBC的boolean類型的set和get都是通過Boolean封裝來傳遞的,大多數ORM也是用Boolean來封裝Boolean類型,比如:
ps.setBoolean("isClosed ",new boolean(true));
ps.setBoolean("isClosed ",new boolean(is closed));
ps.setBoolean("isClosed ",new boolean(I = = 3));
通常這些系統中構造的布爾實例數量相當大,所以系統中充滿了大量的布爾實例小對象,相當消耗內存。其實布爾類只需要兩個實例,壹個是真,壹個是假。
布爾類提供了兩個靜態變量:
publistaticfinalbooleantrule = new boolean(true);
publistaticfinalbooleanflast = new boolean(false);
必要的時候只取這兩個變量,
例如:
ps.setBoolean("isClosed ",布爾型。真);
從壹個布爾變量創建壹個布爾值怎麽樣,就像兩三句話?可以使用Boolean: Boolean.valueOf()提供的靜態方法。
例如:
ps.setBoolean("isClosed ",boolean . value of(is closed));
ps.setBoolean("isClosed ",boolean . value of(I = = 3));
因為valueOf的內部實現是:return(b?真:假);
這樣可以節省很多內存。我相信如果Java規範直接把Boolean的構造函數指定為private,這種情況就再也不會發生了。
(2)不要使用newInteger。
和Boolean類似,java開發中用Integer封裝int的場合很多,通常用int表示的值通常很小。SUNSDK中對Integer的實例化進行了優化,Integer類緩存了-128到127的256個整數。如果使用Integer.valueOf(inti),並且傳入的int的範圍正好在此範圍內,則返回壹個靜態實例。這樣,如果我們用Integer.valueOf代替newInteger,內存占用也會大大減少。如果您的系統要在不同的SDK(比如IBMSDK)中使用,您可以制作自己的工具類包,比如IntegerUtils.valueOf(),這樣您就可以在任何SDK中使用這個特性。
(3)使用StringBuffer,而不是添加字符串。
這個我就不多說了,因為已經說過n遍了。我只想講壹個不是笑話的笑話。我在看國內壹個“著名”的java開發的WEB系統的源代碼時,發現大量的字符串加在壹起,最多用壹種組裝SQL語句的方法構造了近100個字符串實例。沈默!
(4)過度使用哈希表
有壹定開發經驗的開發人員經常使用哈希表(哈希表在JDK的壹種實現是HashMap)來緩存壹些數據,從而提高系統的運行速度。比如java課程,認為用HashMap緩存壹些素材信息、人員信息等基本素材,會增加系統速度和內存占用,尤其是緩存素材較多的時候。事實上,我們可以使用