1. new キーワードを使用せずにクラスのインスタンスを作成します
new キーワードを使用してクラスのインスタンスを作成すると、コンストラクター チェーン内のすべてのコンストラクターが自動的に呼び出されます。ただし、オブジェクトが Cloneable インターフェイスを実装している場合は、その clone() メソッドを呼び出すことができます。 clone() メソッドはクラス コンストラクターを呼び出しません。 Factory パターンを使用してオブジェクトを作成する場合、 clone() メソッドを使用して新しいオブジェクト インスタンスを作成するのは非常に簡単です。
2. 変数を繰り返し初期化しないでください。
デフォルトでは、Java はクラスのコンストラクターが呼び出されるときに変数を特定の値に初期化します。これは、クラスが別のクラスから派生する場合に特に注意する必要があります。これは、 new キーワードを使用してオブジェクトが作成されると、コンストラクター チェーン内のすべてのコンストラクターが自動的に呼び出されるからです。
3. 例外の使用には注意が必要です
例外はパフォーマンスに悪影響を及ぼします。例外をスローすると、まず新しいオブジェクトが作成されます。 Throwable インターフェイスのコンストラクターは、fillInStackTrace() という名前のネイティブ メソッドを呼び出します。fillInStackTrace() メソッドはスタックをチェックし、呼び出しトレース情報を収集します。処理中に新しいオブジェクトが作成されるため、例外がスローされるたびに、jVM はコール スタックを調整する必要があります。例外はエラー処理のみに使用する必要があり、プログラム フローの制御には使用しないでください。
以下の2点に注意してください。 (1) アプリケーションロジックに try/catch を使用しないでください。 if や while などの論理ステートメントで処理できる場合は、可能な限り try/catch ステートメントを使用しないようにします。 (2) 例外処理が必要な場合は、例外を再利用します。 、既存の例外オブジェクトを可能な限り再利用します。例外処理では、例外オブジェクトの生成にほとんどの時間が費やされるためです。
4. スレッド
スレッドはシステム リソースを最大限に活用できます。他のスレッドがハードディスクまたはネットワークの読み取りと書き込みを待機している間、プログラムは処理と実行を続行できます。ただし、スレッドを不適切に使用すると、プログラムのパフォーマンスにも影響します。例: Vector クラスを正しく使用します。 Vector は主に、さまざまな種類のオブジェクト (同じ種類のオブジェクトと異なる種類のオブジェクトを含む) を保存するために使用されます。 Vector はスレッド セーフティ保護機能を提供します。 Vector クラスの多くのメソッドは同期されていますが。ただし、アプリケーションがシングルスレッドであることが確認されている場合は、これらのメソッドの同期はまったく必要ありません。また、Vector に格納されているさまざまなオブジェクトを検索する場合、型の一致に時間がかかることがよくあります。これらのオブジェクトがすべて同じタイプである場合、これらの一致はまったく必要ありません。したがって、Vector クラスを置き換えるために、特定の型のオブジェクトを保存するシングルスレッドのクラスまたはコレクションを設計する必要があります。
スレッド操作に関しては、次の点に注意してください。 (1) 過剰な同期を避ける プログラムがシングルスレッドの場合は、必ず同期を使用しないでください。 (2) コード セグメント全体を同期するのではなく、メソッドを同期する方が、コード セグメント全体を同期するよりもパフォーマンスが向上します。
5. ローカル変数を使ってみる
メソッドの呼び出し時に渡されるパラメーターと呼び出し中に作成される一時変数はスタック (Stack) に保存されるため、処理が高速になります。
6. 可能な限り静的変数を使用する
すべてのインスタンスでこの変数を共有します。
7. クラスの最終修飾子を指定してみます
Final 修飾子を持つクラスは派生されません。 java.lang.String では、String クラスに Final を指定することで、length() メソッドをオーバーライドできなくなります。さらに、クラスが Final として指定されている場合、そのクラスのすべてのメソッドが Final になります。 Java コンパイラーは、すべての最終メソッドをインライン化する機会を探します。これにより、パフォーマンスが平均 50% 向上します。
8.オブジェクトの作成とそれに適切なスペースとサイズを割り当てる
JAVA プログラミングでは、多くの場合、多数のオブジェクト (またはインスタンス) が生成されます。システムはオブジェクトの生成に時間がかかるだけでなく、後でこれらのオブジェクトをガベージ コレクションして処理するにも時間がかかる場合があります。したがって、生成するオブジェクトが多すぎると、プログラムのパフォーマンスに大きな影響を及ぼします。さらに、JAVA の多くのクラスにはデフォルトのスペース割り当てサイズがあります。 StringBuffer クラスの場合、デフォルトの割り当て領域サイズは 16 文字です。プログラム内で使用する StringBuffer の空間サイズが 16 文字以外の場合は、正しい初期化を行う必要があります。
9. ノンブロッキング I/O を使用する
JDK の以前のバージョンは、ノンブロッキング I/O API をサポートしていません。 I/O ブロックを回避するために、一部のアプリケーションは大量のスレッドを作成します (より良い場合は、バッファー プールが使用されます)。この手法は、Web サーバーなど、同時 I/O ストリームをサポートする必要がある多くのアプリケーションで見られます。 JDK 1.4 では、ノンブロッキング I/O ライブラリ (java.nio) が導入されました。
この記事は CSDN ブログからのものです。転載する場合は出典を明記してください: http://blog.csdn.net/Foxalien/archive/2009/12/18/5029659.aspx