「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Java パフォーマンス最適化テクニック

Java パフォーマンス最適化テクニック

2024 年 11 月 8 日に公開
ブラウズ:224

Java Performance Optimization Techniques

こんにちは ?
投稿全文は、Java パフォーマンス最適化テクニック

でご覧いただけます。

1. 概要

コードのパフォーマンスを最適化することは、プロファイルを成功させるために非常に重要です。 Akamai の調査で、ページの読み込みに 3 秒以上かかる場合、オンライン消費者の 57% が Web サイトを放棄することが判明したことをご存知ですか?この投稿では、Java コードを最適化し、コードのパフォーマンスを向上させる方法を学びます。

2. 仮想スレッド

OutOfMemoryError: 新しいネイティブ スレッドを作成できないエラーはもう必要ありません。

Java 19 で導入された Java 仮想スレッドにより、プロジェクトのパフォーマンスが大幅に向上します。

Java の以前のリリースでは、クラシック スレッドが作成されると OS スレッドが割り当てられ、スレッドの数は OS スレッドに制限されるとき、スレッドのタイプは 1 つだけ (クラシック スレッド) でした。

JDK 19 以降では、OS スレッドよりもはるかに軽量な仮想スレッドを作成でき、アプリケーション内で数千の仮想スレッドを作成して実行できます。

Spring Boot アプリケーションで仮想スレッドを有効にするには、次のコードを application.properties に追加します。

spring.threads.virtual.enabled=true

3. 遅延読み込み

パフォーマンスの問題の多くは、必要のないデータを取得することで発生します。

必要な場合にのみオブジェクトをロードすることをお勧めします。

たとえば、Hibernate で FetchLazy を使用できますが、適切なフェッチ戦略は、扱っている特定のユースケースによって異なることに常に留意してください。

fetch = FetchType.LAZY

4. キャッシュ

頻繁にアクセスされるデータをキャッシュすることで、ディスク アクセスを最小限に抑えます。適切なキャッシュ技術を使用すると、レイテンシを短縮し、ネットワークの混雑を回避し、コンテンツの可用性を向上させることができます。

Spring フレームワークは、Redis、Caffeie、Cache2k などを含むさまざまなキャッシュ プロバイダーのサポートを提供します...

5. GenerationType.TABLE を避ける

JPA でキー生成戦略を選択するときは、使用しているデータベースに最適なものを選択することが重要です。
世代タイプ.TABLE

パフォーマンスのオーバーヘッドのため、GenerationType.TABLE の使用は避けてください。主キーが必要になるたびに、シーケンス テーブルの選択と更新とともに LOCK ステートメントが実行されます。
世代タイプ.IDENTITY

GenerationType.IDENTITY は MySQL に最適です。MySQL は自動インクリメント フィールドを使用し、GenerationType.IDENTITY はこれとうまく連携するためです。
生成タイプ.SEQUENCE

GenerationType.SEQUENCE は通常、PostgreSQL および Oracle で使用されます。どちらのデータベースも、一意の数値のシーケンスを生成するデータベース オブジェクトであるシーケンスをサポートしています。

6. クエリプランキャッシュ

Hibernate のクエリ プラン キャッシュは、アプリケーションのパフォーマンスを向上させることができる重要な機能です。

Hibernate が JPQL クエリを実行する場合、対応する SQL クエリを生成する必要があります。このプロセスには、クエリを抽象構文ツリーに解析し、ツリーを SQL クエリに変換し、最後に結果を Java オブジェクトにマッピングし直すことが含まれます。

このプロセスが完了すると、同じクエリに対してこれらの手順を再度実行する必要がないように、休止状態はプロセスをキャッシュします。

クエリ プラン キャッシュを有効にして構成するには、次のコードを使用します:

hibernate.query.plan_cache_max_size=2048 # キャッシュ内のクエリ プランの最大数
hibernate.query.plan_parameter_metadata_max_size=128 # パラメータメタデータを含むクエリプランの最大サイズ

7. 結論

Java コードのパフォーマンスの最適化は、高速で応答性の高いアプリケーションを提供するために不可欠です。

仮想スレッドなどの最新の機能を活用し、遅延読み込みを実装し、効率的なキャッシュ戦略を使用し、データベース操作を最適化することで、アプリケーションのパフォーマンスを大幅に向上させることができます。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/mohamed_kramti/java-performance-optimization-techniques-45d1?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>
  • タイプを扱いたくありませんでした。今苦しんでいます:(
    タイプを扱いたくありませんでした。今苦しんでいます:(
    インディーズ プロジェクトを開始しましたが、TypeScript は冗長すぎて、TS を使用して初期バージョンをビルドするのに時間がかかると考えたため、使用したくありませんでした。 さて、プロジェクトの複雑さは予想以上に急速に増大し、大量のデータが流れています。ああああ....、バグも発生し始めてい...
    プログラミング 2024 年 11 月 8 日に公開
  • ランタイムを理解する: C から最新言語まで
    ランタイムを理解する: C から最新言語まで
    現代のソフトウェア開発とプログラミングの時代では、「ランタイム」という用語は、議論されているコンテキストや言語に応じて異なる意味を持ちます。ここでは、Java や Python などの最新の言語と比較して C でのランタイムがどのように動作するかに焦点を当てて、これらの違いを明確にするためにここにい...
    プログラミング 2024 年 11 月 8 日に公開
  • Python と ArkScript の非同期モデルの比較
    Python と ArkScript の非同期モデルの比較
    Python は最近非常に注目を集めています。今年 10 月に予定されている 3.13 リリースでは、GIL を削除するという大規模な作業が開始されます。 (ほぼ) GIL なしの Python を試してみたい好奇心旺盛なユーザー向けに、プレリリースがすでにリリースされています。 この誇大宣伝のせい...
    プログラミング 2024 年 11 月 8 日に公開
  • JavaScript ウィザードになる上位の VS Code 拡張機能
    JavaScript ウィザードになる上位の VS Code 拡張機能
    Writing code is hard. As a JavaScript developer, you’ve probably felt the pressure of juggling multiple tasks — writing clean code, debugging tricky i...
    プログラミング 2024 年 11 月 8 日に公開
  • Python で ndarray の出現回数をカウントするにはどうすればよいですか?
    Python で ndarray の出現回数をカウントするにはどうすればよいですか?
    ndarray の出現回数をカウントするnumpy では、次の操作を試みているときに「numpy.ndarray オブジェクトには属性カウントがありません」というエラーが発生することがあります。 .count() メソッドを使用して、配列内の特定の値の出現をカウントします。numpy.unique ...
    プログラミング 2024 年 11 月 8 日に公開
  • 誰も話題にしていないように見える唯一のこと
    誰も話題にしていないように見える唯一のこと
    私たちのほとんどのソフトウェア開発者に最初に起こることは、希望を失うことだと思います。それは、手抜きを強いられることです。 基本的には、特定の締め切りを守らなければならないと言われています。 そして、いくつかの作業を開始し、締め切りが近づくと、思ったよりも時間がかかることに必然的に気づきます。 そし...
    プログラミング 2024 年 11 月 8 日に公開
  • PHP で配列からクエリ文字列を生成するにはどうすればよいですか?
    PHP で配列からクエリ文字列を生成するにはどうすればよいですか?
    PHP で配列からクエリ文字列を作成するPHP フレームワークは、配列からクエリ文字列を作成するために特別に設計された多用途の関数を提供します。 &&&]http_build_query()。この関数の主な目的は、キーと値のペアの配列を標準の URL エンコードされたクエリ文字列に変換することです。...
    プログラミング 2024 年 11 月 8 日に公開
  • JavaScript における基本的なオブジェクトと関数の連鎖の原則とは何ですか?
    JavaScript における基本的なオブジェクトと関数の連鎖の原則とは何ですか?
    JavaScript における基本的なオブジェクト/関数チェーンについて理解する関数チェーンは、開発者が特定の順序で実行される一連の操作を作成できるようにするプログラミング手法です。 JavaScript では、これは関数自体を返すことと this キーワードを使用することを組み合わせることによって...
    プログラミング 2024 年 11 月 8 日に公開
  • 開発ツールは必要ありません
    開発ツールは必要ありません
    私は数か月前、フロントエンド プロジェクトに取り組んでいました。このプロジェクトは、従来のダッシュボードに統合されることを目的としたマイクロフロントエンドでした。 マイクロフロントエンド アプローチの理由は、ダッシュボードの複雑さを軽減することでした。私はこの挑戦に興奮し、それに飛び込みました。 ...
    プログラミング 2024 年 11 月 8 日に公開
  • OpenAI はコードの非縮小化が驚くほど得意です
    OpenAI はコードの非縮小化が驚くほど得意です
    While browsing the Internet for inspiration, I came across an interesting-looking component. I thought the block with the running ASCII art looked coo...
    プログラミング 2024 年 11 月 8 日に公開
  • 有毒な Laravel コミュニティが私のコーディングへの情熱をいかに破壊したか。
    有毒な Laravel コミュニティが私のコーディングへの情熱をいかに破壊したか。
    今でも昨日のことのように覚えていますが、私が Web 開発者になる旅を始めたのは 20 年以上前のことでした。 お気に入りの Web サイトをいくつか閲覧するために、56k モデムにダイヤルアップして電話回線を占有しました。それから、どうすれば自分で作ることができるだろうかと考えました。 Micro...
    プログラミング 2024 年 11 月 8 日に公開
  • ワーカーと一緒に導入する
    ワーカーと一緒に導入する
    ボタンジェネレーター ボタン ジェネレーターは、GitHub でホストされているプロジェクトのデプロイメント プロセスを合理化するために設計されたツールです。 「Cloudflare Workers にデプロイ」ボタンを作成すると、デプロイメントプロセスが簡素化され、ユーザーはワン...
    プログラミング 2024 年 11 月 8 日に公開
  • PHP で文字列を操作する
    PHP で文字列を操作する
    文字列は、プログラミングで文字のシーケンスを表すために使用されるデータ型です。これらの文字には、文字、数字、スペース、記号などを使用できます。多くのプログラミング言語では、文字列は一重引用符 (') または二重引用符 (") で囲まれます。 文字列の連結 連結は、2 つ以上の文字列...
    プログラミング 2024 年 11 月 8 日に公開
  • jQuery は Comet パターンを使用したサーバー送信メッセージングに役立ちますか?
    jQuery は Comet パターンを使用したサーバー送信メッセージングに役立ちますか?
    jQuery を使用したサーバー送信メッセージングのための Comet の活用JavaScript プログラミングの領域では、サーバー プッシュ機能が注目を集めています。コメットのデザイン パターンが人気のアプローチとして登場。この記事では、有名な jQuery ライブラリ上に構築されたこのようなソ...
    プログラミング 2024 年 11 月 8 日に公開
  • Keras でサイコロ誤差係数のカスタム損失関数を実装するにはどうすればよいですか?
    Keras でサイコロ誤差係数のカスタム損失関数を実装するにはどうすればよいですか?
    Keras のカスタム損失関数: Dice Error Coefficient の実装この記事では、カスタム損失関数の作成方法を検討します。 Keras では、Dice エラー係数に焦点を当てています。パラメータ化された係数を実装し、Keras の要件との互換性を保つためにそれをラップする方法を学習...
    プログラミング 2024 年 11 月 8 日に公開

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3