国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ Java &#&はじめる Javaにおけるメモリ領(lǐng)域の分割

Javaにおけるメモリ領(lǐng)域の分割

Nov 29, 2019 pm 04:54 PM
java メモリ領(lǐng)域

Javaにおけるメモリ領(lǐng)域の分割

JVM とは何ですか?

JVM とは Java Virtual Machine (Java 仮想マシン) の略稱で、計算機の仕様であり、実際のコンピュータ上でシミュレーションにより擬似的に実現(xiàn)される架空のコンピュータであり、コンピュータのさまざまな機能を指します。 Java 仮想マシンには、バイトコード命令のセット、レジスターのセット、スタック、ガベージ コレクション ヒープ、およびストレージ メソッド フィールドが含まれます。

JVM は特定のオペレーティング システム プラットフォームに関連する情報をシールドするため、Java プログラムは Java 仮想マシン上で実行されるターゲット コード (バイトコード) を生成するだけで済み、変更を加えずに複數(shù)のプラットフォーム上で実行できます。 JVM がバイトコードを?qū)g行するとき、実際には最終的にバイトコードを特定のプラットフォームで実行するためのマシン命令に解釈します。

JVM メモリ領(lǐng)域

実行中、JVM は管理するメモリを複數(shù)の領(lǐng)域に分割します。各領(lǐng)域には獨自の目的とライフサイクルがあります。メモリ パーティションの図に基づいて、それらを 1 つずつ分解してみましょう。

Javaにおけるメモリ領(lǐng)域の分割

プログラム カウンター レジスタ

プログラム カウンターは、小さな領(lǐng)域を占めます。メモリの量。その役割は、現(xiàn)在のスレッドによって実行されたバイトコードのインジケータとして見ることができます。カウンタの値を変更することで、次のバイトコード命令を取得できます。

プログラム カウンタがネイティブ メソッドを?qū)g行すると、カウンタの値は空 (未定義) になります。

プログラム カウンタはスレッドプライベートであり、各スレッドに 1 つ割り當てられます。

オンライン ビデオ チュートリアルの共有: java 學習

仮想マシン スタック (VM スタック)

仮想マシン スタックが実行されますJVM Java メソッド サービスにより、各メソッドが実行されると、ローカル変數(shù)テーブル、オペランド スタック、ダイナミック リンク、メソッド出口などの情報を格納するスタック フレームが作成されます。各メソッドの呼び出しから実行終了までが、仮想マシンスタックからスタックフレームをプッシュしてポップアウトするまでの処理に相當します。

仮想マシン スタックのローカル変數(shù)テーブルには、次のデータが格納されます。

基本型データ (boolean、byte、char、short、int、float、long、double)

オブジェクトリファレンス(參照型)

returnAddress型(バイトコード命令のアドレスを指す)

ローカル変數(shù)テーブルに必要なメモリ空間は、実行時に決定されることに注意してください。コンパイルすると、サイズは変更されなくなります。

仮想マシン スタックもスレッドプライベートであり、各スレッドに 1 つが割り當てられます。

JVM は、仮想マシン スタックに対して 2 つの例外を指定します。

StackOverflowError: スレッドによって要求されたスタックの深さが、仮想マシンによって許可される深さを超えています。

OutOfMemoryError: 仮想マシン スタックは動的に拡張できますが、拡張中にメモリ不足を適用できない場合。

ネイティブ メソッド スタック

ローカル メソッド スタックは仮想マシン スタックに似ていますが、主な違いは、ローカル メソッド スタックが特にネイティブ メソッド用のサービスを提供することです。

ネイティブ メソッド: Java の Native キーワードによって宣言され、非 Java 言語で実裝されたメソッドは、ローカル ライブラリによって提供されるサードパーティ言語メソッドを參照します。

ローカル メソッド スタックもスレッドプライベートであり、各スレッドが 1 つを割り當てます。

ヒープ

ヒープは、すべてのスレッドによって共有されるメモリ領(lǐng)域です。JVM の起動時に作成されます。通常、JVM 內(nèi)の最大の領(lǐng)域です。ガベージ コレクター (GC によって管理されるメイン領(lǐng)域)。

ヒープに格納される主なデータは次のとおりです:

Object

Array

ヒープは物理的に不連続であっても構(gòu)いませんが、論理的に連続していれば問題ありません。 、したがって拡張可能なメモリ領(lǐng)域です。

ヒープ メモリ サイズがオブジェクトまたは配列を作成するのに十分ではなく、拡張できない場合、OutOfMemoryError 例外がスローされます。

メソッド領(lǐng)域 (メソッド領(lǐng)域)

メソッド領(lǐng)域は、すべてのスレッドで共有されるメモリ領(lǐng)域でもあります。

メソッド領(lǐng)域に格納される主なデータは次のとおりです。

JVM によってロードされたクラス情報

定數(shù) (jdk1.7 以降、ランタイム定數(shù)プールには

靜的変數(shù)

ジャストインタイム コンパイラによってコンパイルされたコードとその他のデータ

ガベージ コレクター (GC) がこの領(lǐng)域に現(xiàn)れることはほとんどありません。主なメモリのリサイクル ターゲットは、定數(shù)プールのリサイクルと型のアンロードです。

メソッド領(lǐng)域がメモリ割り當て要件を満たさない場合、OutOfMemoryError 例外がスローされます。

定數(shù)プール (実行時定數(shù)プール)

定數(shù)プールはメソッド領(lǐng)域の一部であり、コンパイル中に生成されるさまざまなリテラルおよびシンボル?yún)⒄栅蚋窦{するために使用されます。定數(shù)は、コンパイル時と実行時 (String の intern()) の両方でプールに入れることができます。メモリには制限があり、適用できない場合は OutOfMemoryError 例外がスローされます。

jdk1.7 以降、ランタイム定數(shù)プールはヒープに移動されました。

ダイレクト メモリ

ダイレクト メモリは、JVM ランタイム メモリ データ領(lǐng)域ではなく、JVM 仕様で定義されているメモリでもありません。

ダイレクト メモリは物理メモリのサイズを占有します。JVM メモリを割り當てるときにダイレクト メモリを含めるように注意する必要があります。そうしないと、メモリを動的に拡張するときに OutOfMemoryError 例外が発生する可能性があります。

おすすめの関連記事チュートリアル: Java 入門

以上がJavaにおけるメモリ領(lǐng)域の分割の詳細內(nèi)容です。詳細については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當する法的責任を負いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JDBCを使用してJavaのトランザクションを処理する方法は? JDBCを使用してJavaのトランザクションを処理する方法は? Aug 02, 2025 pm 12:29 PM

JDBCトランザクションを正しく処理するには、最初に自動コミットモードをオフにし、次に複數(shù)の操作を?qū)g行し、結(jié)果に応じて最終的にコミットまたはロールバックする必要があります。 1。CONN.SETAUTOCOMMIT(FALSE)を呼び出して、トランザクションを開始します。 2。挿入や更新など、複數(shù)のSQL操作を?qū)g行します。 3。すべての操作が成功した場合はconn.commit()を呼び出し、データの一貫性を確保するために例外が発生した場合はconn.rollback()を呼び出します。同時に、リソースを使用してリソースを管理し、例外を適切に処理し、接続を密接に接続するために、接続の漏れを避けるために使用する必要があります。さらに、接続プールを使用してセーブポイントを設(shè)定して部分的なロールバックを達成し、パフォーマンスを改善するためにトランザクションを可能な限り短く保つことをお勧めします。

Java仮想マシン(JVM)內(nèi)部の理解 Java仮想マシン(JVM)內(nèi)部の理解 Aug 01, 2025 am 06:31 AM

thejvmenablesjavaの「writeonce、runany where "capabilitybyexcuting byteCodeThethermainComponents:1。theClassLoaderSubSystemloads、links、andinitializes.classfilesusingbootStrap、拡張、およびアプリケーションクラスローロー、

Javaでカレンダーを操作する方法は? Javaでカレンダーを操作する方法は? Aug 02, 2025 am 02:38 AM

Java.Timeパッケージのクラスを使用して、古い日付とカレンダーのクラスを置き換えます。 2。LocalDate、LocalDateTime、LocalTimeを通じて現(xiàn)在の日付と時刻を取得します。 3。of()メソッドを使用して特定の日付と時刻を作成します。 4.プラス/マイナスメソッドを使用して、時間を不正に増加させて短縮します。 5. ZonedDateTimeとZoneIDを使用して、タイムゾーンを処理します。 6。DateTimeFormatterを介したフォーマットおよび解析の文字列。 7.インスタントを使用して、必要に応じて古い日付型と互換性があります?,F(xiàn)代のJavaでの日付処理は、java.timeapiを使用することを優(yōu)先する必要があります。

Javaフレームワークの比較:Spring Boot vs Quarkus vs Micronaut Javaフレームワークの比較:Spring Boot vs Quarkus vs Micronaut Aug 04, 2025 pm 12:48 PM

Pre-formanceTartuptimeMemoryusage、quarkusandmicronautleadduetocopile-timeprocessingingandgraalvsupport、withquarkusoftentylightbetterine serverlessシナリオ。

ネットワークポートとファイアウォールの理解 ネットワークポートとファイアウォールの理解 Aug 01, 2025 am 06:40 AM

ネットワークポートアンドファイアワルクトグテルトエナブルコマニケーションwhiledensuringsecurity.1.networksarevirtualendpointsnumbered0–655 35、withwell-knownportslike80(http)、443(https)、22(ssh)、および25(smtp)識別pecificservices.2.portsoperateovertcp(信頼できる、c

Garbage CollectionはJavaでどのように機能しますか? Garbage CollectionはJavaでどのように機能しますか? Aug 02, 2025 pm 01:55 PM

JavaのGarbage Collection(GC)は、メモリを自動的に管理するメカニズムであり、到達不可能なオブジェクトを取り戻すことでメモリ漏れのリスクを軽減します。 1.GCルートオブジェクトからのオブジェクトのアクセシビリティ(スタック変數(shù)、アクティブスレッド、靜的フィールドなど)、および到達不可能なオブジェクトはゴミとしてマークされています。 2。マーククリアリングアルゴリズムに基づいて、すべての到達可能なオブジェクトをマークし、マークのないオブジェクトをクリアします。 3.世代の収集戦略を採用する:新世代(Eden、S0、S1)は頻繁にMinorGCを?qū)g行します。高齢者のパフォーマンスは少なくなりますが、MajorGCを?qū)g行するのに時間がかかります。 Metaspaceはクラスメタデータを保存します。 4。JVMはさまざまなGCデバイスを提供します。SerialGCは小さなアプリケーションに適しています。 ParallelGCはスループットを改善します。 CMSが減少します

Javaビルドツールの比較:Maven vs. Gradle Javaビルドツールの比較:Maven vs. Gradle Aug 03, 2025 pm 01:36 PM

gradleisthebetterchoiceformostnewprojectoitssuperorfficability、performance、andmoderntoolingsupport.1.gradle’sgroovy/kotlindslismoreconciseandexpressiveethanmaven’sverboseml.2.gradleorformsmavenbenbumebutedwitedwitedwitedspedexは

説明された延期聲明の例で進みます 説明された延期聲明の例で進みます Aug 02, 2025 am 06:26 AM

Deferは、クリーニングリソースなど、関數(shù)が戻る前に指定された操作を?qū)g行するために使用されます。パラメーターは、延期時にすぐに評価され、関數(shù)は最後のファーストアウト(LIFO)の順に実行されます。 1.複數(shù)の債務は、宣言の逆の順序で実行されます。 2.ファイルの閉鎖などの安全なクリーニングに一般的に使用されます。 3。指定された返品値を変更できます。 4.回復に適したパニックが発生した場合でも実行されます。 5。リソースの漏れを防ぐために、ループで延期の亂用を避けます。正しい使用により、コードのセキュリティと読みやすさが向上します。

See all articles