オブジェクトをできるだけ再利用し、forループで文字列接合を行うか、プロトタイプモードでパフォーマンスを向上させるなど、オブジェクトをループしないでください. コンテナクラス初期化時に長さを指定します.例えば、List collection=new ArrayList(5);ArrayListの下位層はObject配列を用いて実現され、デフォルトでは空であり、要素を追加する際に容量が足りなければ拡張操作に関与し、拡張操作は配列の複製操作に関与する.HashMapの最下層も配列であり、各配列要素はチェーンテーブルを指し、チェーンテーブルの長さが一定値を超えると赤黒い木になるため、HashMapの初期化時にも初期サイズを指定し、resize()時の再ハッシュを避ける. ArrayListのランダムアクセスが速く、LinkedListの追加削除が速い.LinkedListは双方向チェーンテーブルです. Entryを使用してMapを巡回する. for(Map.Entry entry : map.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
}
大配列コピーはSystem.arraycopyで、その下層はNativeコードで作られ、Cコードで作られています. 包装タイプではなく、できるだけ基本タイプを使用します. System.gc()を手動で呼び出さないでください.その役割は、ゴミ収集器にFullGCを作るように通知し、GCを通じてこのような方法ではなく最適化することです. 期限切れのオブジェクトの参照をタイムリーに削除し、メモリの漏洩を防止する. できるだけ局所変数を使用し、変数の作用域を減らす. できるだけ非同期の容器、例えばArrayList VS Vectorを使用する. は、synchronizedメソッドVS synchronizedコードブロックなどの同期作用範囲をできるだけ縮小する. ThreadLocalを使用して、SimpleDataFormatなどのスレッドが安全ではないオブジェクトをキャッシュします.それは複雑で、作成時にリソースを消費します.使用するたびにnewを1つ使わなくても、ThreadLocalにキャッシュできます.スレッドの一例になります. import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatUtil {
private static ThreadLocal dateFormatHolder = new ThreadLocal() {
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}
};
public static void main(String[] args) {
dateFormatHolder.get().format(new Date());
}
}
は、できるだけ遅延ロードを使用する. はできるだけ使用反射を減らして、もし使う必要があるならば、キャッシュをプラスして、初めて反射が必要な時だけ反射して、それからそれを1つのキャッシュに入れて、後でキャッシュから取ります; 接続プール、スレッドプール、オブジェクトプール、キャッシュをできるだけ使用します. リソース、I/Oストリーム、Socket、データベース接続をタイムリーに解放します. 異常を慎重に使用し、異常を投げて正常な業務論理を表示しないでください.異常も比較的重い対象です. String操作の場合、できるだけ正規表現を少なくし、機能は強いが性能は低く、replaceでreplaceAllを使わないことができる. ログ出力注意異なるレベルを使用する; ログでは、パラメータパッチはプレースホルダを使用します.