こんにちは ?
投稿全文は、Java パフォーマンス最適化テクニック
コードのパフォーマンスを最適化することは、プロファイルを成功させるために非常に重要です。 Akamai の調査で、ページの読み込みに 3 秒以上かかる場合、オンライン消費者の 57% が Web サイトを放棄することが判明したことをご存知ですか?この投稿では、Java コードを最適化し、コードのパフォーマンスを向上させる方法を学びます。
OutOfMemoryError: 新しいネイティブ スレッドを作成できないエラーはもう必要ありません。
Java 19 で導入された Java 仮想スレッドにより、プロジェクトのパフォーマンスが大幅に向上します。
Java の以前のリリースでは、クラシック スレッドが作成されると OS スレッドが割り当てられ、スレッドの数は OS スレッドに制限されるとき、スレッドのタイプは 1 つだけ (クラシック スレッド) でした。
JDK 19 以降では、OS スレッドよりもはるかに軽量な仮想スレッドを作成でき、アプリケーション内で数千の仮想スレッドを作成して実行できます。
Spring Boot アプリケーションで仮想スレッドを有効にするには、次のコードを application.properties に追加します。
spring.threads.virtual.enabled=true
パフォーマンスの問題の多くは、必要のないデータを取得することで発生します。
必要な場合にのみオブジェクトをロードすることをお勧めします。
たとえば、Hibernate で FetchLazy を使用できますが、適切なフェッチ戦略は、扱っている特定のユースケースによって異なることに常に留意してください。
fetch = FetchType.LAZY
頻繁にアクセスされるデータをキャッシュすることで、ディスク アクセスを最小限に抑えます。適切なキャッシュ技術を使用すると、レイテンシを短縮し、ネットワークの混雑を回避し、コンテンツの可用性を向上させることができます。
Spring フレームワークは、Redis、Caffeie、Cache2k などを含むさまざまなキャッシュ プロバイダーのサポートを提供します...
JPA でキー生成戦略を選択するときは、使用しているデータベースに最適なものを選択することが重要です。
世代タイプ.TABLE
パフォーマンスのオーバーヘッドのため、GenerationType.TABLE の使用は避けてください。主キーが必要になるたびに、シーケンス テーブルの選択と更新とともに LOCK ステートメントが実行されます。
世代タイプ.IDENTITY
GenerationType.IDENTITY は MySQL に最適です。MySQL は自動インクリメント フィールドを使用し、GenerationType.IDENTITY はこれとうまく連携するためです。
生成タイプ.SEQUENCE
GenerationType.SEQUENCE は通常、PostgreSQL および Oracle で使用されます。どちらのデータベースも、一意の数値のシーケンスを生成するデータベース オブジェクトであるシーケンスをサポートしています。
Hibernate のクエリ プラン キャッシュは、アプリケーションのパフォーマンスを向上させることができる重要な機能です。
Hibernate が JPQL クエリを実行する場合、対応する SQL クエリを生成する必要があります。このプロセスには、クエリを抽象構文ツリーに解析し、ツリーを SQL クエリに変換し、最後に結果を Java オブジェクトにマッピングし直すことが含まれます。
このプロセスが完了すると、同じクエリに対してこれらの手順を再度実行する必要がないように、休止状態はプロセスをキャッシュします。
クエリ プラン キャッシュを有効にして構成するには、次のコードを使用します:
hibernate.query.plan_cache_max_size=2048 # キャッシュ内のクエリ プランの最大数
hibernate.query.plan_parameter_metadata_max_size=128 # パラメータメタデータを含むクエリプランの最大サイズ
Java コードのパフォーマンスの最適化は、高速で応答性の高いアプリケーションを提供するために不可欠です。
仮想スレッドなどの最新の機能を活用し、遅延読み込みを実装し、効率的なキャッシュ戦略を使用し、データベース操作を最適化することで、アプリケーションのパフォーマンスを大幅に向上させることができます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3