ホームページ バックエンド開発 XML/RSS チュートリアル Java オブジェクトの強い参照、弱い参照、弱い参照、および仮想参照

Java オブジェクトの強い参照、弱い参照、弱い参照、および仮想参照

Dec 20, 2016 pm 01:34 PM

JDK1.2 より前のバージョンでは、オブジェクトがどの変数からも参照されていない場合、プログラムはそのオブジェクトを使用できなくなります。つまり、プログラムは、オブジェクトが到達可能な場合にのみオブジェクトを使用できます。これは日常生活と同じで、お店で物を買った後、役に立つものであればそのまま持ち、そうでないものはゴミ箱に捨てて清掃業者に回収してもらいます。一般的に、一度ゴミ箱に捨てられたアイテムを拾って再度使用することはできません。

しかし、状況はそれほど単純ではない場合もあり、味気なく、捨てるのは残念です。この種のアイテムは今は役に立ちませんが、保管しておくとスペースがかかりますが、将来使用される可能性があるため、すぐに捨てるのは費用対効果が高くありません。このような必需品については、家に十分なスペースがある場合は、まず自宅に置いておくという妥協案が考えられます。自宅に十分なスペースがない場合は、家のゴミをすべて撤去したとしても、必要不可欠なアイテムを収納することはできません。日用品が足りない場合は、これらの必需品を捨ててください。

JDK バージョン 1.2 以降、オブジェクト参照は 4 つのレベルに分割され、プログラムがオブジェクトのライフサイクルをより柔軟に制御できるようになりました。これら 4 つのレベルは、高から低の順に、強参照、ソフト参照、弱参照、仮想参照です。


1.強い引用

この章の前半で紹介した引用は、実際には強い引用であり、最もよく使用される引用です。オブジェクトに強い参照がある場合、それは必須の日用品と同様であり、ガベージ コレクターはそれを再利用することはありません。メモリ領域が不十分な場合、Java 仮想マシンは、メモリ不足の問題を解決するために強参照を持つオブジェクトを恣意的にリサイクルするのではなく、OutOfMemoryError エラーをスローしてプログラムを異常終了させます。

2.ソフト参照



オブジェクトがソフト参照のみを持つ場合、それは使い捨ての日用品に似ています。十分なメモリ領域がある場合、ガベージ コレクタはメモリ領域を再利用しません。メモリ領域が不十分な場合は、これらのオブジェクトのメモリが再利用されます。ガベージ コレクターがオブジェクトを収集しない限り、オブジェクトはプログラムで使用できます。ソフト参照を使用して、メモリに依存するキャッシュを実装できます。

ソフト参照は、参照キュー (ReferenceQueue) と組み合わせて使用​​できます。ソフト参照によって参照されるオブジェクトがガベージ コレクションされた場合、Java 仮想マシンは、それに関連付けられた参照キューにソフト参照を追加します。



3.弱参照

オブジェクトが弱参照しか持たない場合、それは使い捨ての日用品に似ています。弱参照とソフト参照の違いは、弱参照のみを持つオブジェクトのライフサイクルが短いことです。ガベージコレクタスレッドが管轄するメモリ領域をスキャンする過程で、弱参照のみを持つオブジェクトが見つかると、現在のメモリ空間が十分であるかどうかに関係なく、そのオブジェクトのメモリが再利用されます。ただし、ガベージ コレクターは優先度が非常に低いスレッドであるため、弱い参照のみを持つオブジェクトを必ずしもすぐに見つけられるとは限りません。

弱参照は参照キュー (ReferenceQueue) と組み合わせて使用​​できます。弱参照によって参照されるオブジェクトがガベージ コレクションされた場合、Java 仮想マシンはそれに関連付けられた参照キューに弱参照を追加します。

4.ファントム参照

名前が示すように、「ファントム参照」は名前だけです。他の参照とは異なり、ファントム参照はオブジェクトのライフサイクルを決定しません。オブジェクトがファントム参照のみを保持している場合、オブジェクトには参照がないかのようになり、いつでもガベージ コレクションが行われる可能性があります。
仮想参照は主に、ガベージ コレクションされるオブジェクトのアクティビティを追跡するために使用されます。仮想参照、ソフト参照、弱参照の違いの 1 つは、仮想参照は参照キュー (ReferenceQueue) と組み合わせて使用​​する必要があることです。ガベージ コレクターがオブジェクトをリサイクルする準備をしているときに、オブジェクトにまだ仮想参照があることが判明すると、オブジェクトのメモリをリサイクルする前に、それに関連付けられた参照キューに仮想参照を追加します。プログラムは、仮想参照が参照キューに追加されているかどうかを判断することによって、参照されたオブジェクトがガベージ コレクションされるかどうかを判断できます。プログラムは、仮想参照が参照キューに追加されたことを検出すると、参照されたオブジェクトのメモリがリサイクルされる前に必要なアクションを実行できます。

本書では、「引用」は動詞としても名詞としても使用できますが、読者は文脈に応じて「引用」の意味を区別してください。

java.lang.ref パッケージには、SoftReference クラス、WeakReference クラス、PhantomReference クラスの 3 つのクラスが提供されており、それぞれソフト参照、弱参照、ファントム参照を表します。 ReferenceQueue クラスは参照キューを表し、これら 3 つの参照クラスと組み合わせて使用​​して、参照されたオブジェクトをリサイクルする際の Java 仮想マシンのアクティビティを追跡できます。次のプログラムは、String オブジェクト、ReferenceQueue オブジェクト、および WeakReference オブジェクトを作成します:

//強参照を作成します
String str = new String("hello");

//参照キューを作成します。 は String オブジェクトへの参照がキューに格納されていることを示します
ReferenceQueue();

//Create 「hello」オブジェクトを参照し、rq 参照キューに関連付けられている弱参照
// は、WeakReference が String オブジェクトを弱参照することを示す一般的なマークです
WeakReference wf = new WeakReference< String>(str, rq);

上記は、Java オブジェクトの強参照、ソフト参照、弱参照、および仮想参照の内容です。さらに関連した内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。


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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

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 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

トップ10通貨取引プラットフォーム仮想通貨アプリトップ10信頼できる有用な通貨取引アプリ トップ10通貨取引プラットフォーム仮想通貨アプリトップ10信頼できる有用な通貨取引アプリ Feb 17, 2025 pm 03:57 PM

繁栄している仮想通貨市場では、信頼できる取引プラットフォームを選択することが重要です。この記事では、Binance、Coinbase、FTX、Huobi、Okx、Gemini、Kraken、Bitstamp、Bittrex、Kucoinなど、10の非常に尊敬される仮想通貨取引プラットフォームを推奨しています。セキュリティ、流動性、費用、資産の選択、ユーザーエクスペリエンスなどの要因は、取引プラットフォームを選択する際に重要です。この記事では、権威ある参照を提供し、ニーズに最適な取引プラットフォームを見つけるのに役立ちます。

通貨サークルの上位10通貨取引プラットフォームのランキング(2025年に推奨されるトップ10の仮想通貨取引アプリ) 通貨サークルの上位10通貨取引プラットフォームのランキング(2025年に推奨されるトップ10の仮想通貨取引アプリ) Feb 20, 2025 pm 05:57 PM

推奨される最高の仮想通貨取引プラットフォーム: Binance:最大のトランザクションボリューム、最も多くのお金がサポートされており、エコシステムは完璧です。 OKX:高度なトレーディングエンジン、リッチ取引ツール、強力なデリバティブトレーディングプラットフォーム。 Gate.io:最大数の暗号通貨、便利なユーザーインターフェイス、および革新的な機能。 Bitget:デリバティブ取引、主要なソーシャルトレーディング機能、強力な流動性に焦点を当てます。 Coinbase:米国の初心者に最大かつ最も準拠し、適しています。

トップ10 2025年のデジタル通貨取引アプリのランキングの安全な仮想通貨交換権限 トップ10 2025年のデジタル通貨取引アプリのランキングの安全な仮想通貨交換権限 Feb 21, 2025 pm 02:24 PM

2025年のトップ10の最も安全な仮想通貨交換: バイナンス; okx; gate.io; ビットゲット; huobi; クコイン; Kraken; バイビット; crypto.com; コインベース。

2025年のトップ10仮想通貨取引アプリの権威あるランキング 2025年のトップ10仮想通貨取引アプリの権威あるランキング Mar 07, 2025 pm 06:18 PM

2025年のトップ10の仮想通貨トレーディングは、セキュリティ、豊かな品種、および大規模なトランザクションのボリュームと低い料金を備えています - 言語サポート。

仮想コインを取引できるプラットフォームは何ですか? 仮想コインを取引できるプラットフォームは何ですか? Mar 12, 2025 pm 07:30 PM

この記事では、Binance、Gate.io、Ouyi Okx、Coinbase、Kraken、Bitfinex、Kucoin、Bybit、Huobi、Bitmexなど、世界でより包括的なランキングを備えた仮想通貨取引プラットフォームを紹介します。これらのプラットフォームには、トランザクションの深さ、ユーザーエクスペリエンス、セキュリティ、コンプライアンスなどの点で独自の利点があります。通貨取引に焦点を当てたものもあれば、異なるユーザーのニーズを満たすためにデリバティブトレーディングが得意なものもあります。 適切なプラットフォームを選択するには、あなた自身の取引体験、リスク許容度、投資の好みに基づいて包括的な検討が必要です。 クリックして読んで、これらのトップ仮想通貨取引プラットフォームの詳細については、デジタル資産を安全かつ効率的に取引するのに役立ちます

2025年の通貨サークル交換ランキングのトップ10のデジタル通貨アプリ 2025年の通貨サークル交換ランキングのトップ10のデジタル通貨アプリ Feb 27, 2025 pm 06:42 PM

上位10のデジタル通貨交換アプリケーションの中で、トップ3は、Binance(リッチ製品と高度な取引ツール)、OKX(世界をリードする暗号通貨デリバティブ取引プラットフォーム)、およびgate.io(1,000以上のデジタル通貨取引をサポートしています)です。取引所を選択するときは、セキュリティ、取引タイプ、取引手数料、ユーザーエクスペリエンス、評判、コミュニティなどの重要な手順を検討する必要があります。

2025年のトップ10 Exchange仮想通貨アプリ(通貨交換の最新のトップ10ランキング) 2025年のトップ10 Exchange仮想通貨アプリ(通貨交換の最新のトップ10ランキング) Feb 17, 2025 pm 04:27 PM

2025年、仮想通貨市場は引き続き繁栄すると予想され、主要な取引所はユーザーのニーズを満たすためにさまざまなサービスを提供します。その中には、その流動性とセキュリティ対策で知られる幅広い取引ペアと低い料金に多くの注目を集めています。

トップ10の香港通貨取引プラットフォーム、香港デジタル通貨取引アプリのランキング、2025 トップ10の香港通貨取引プラットフォーム、香港デジタル通貨取引アプリのランキング、2025 Mar 03, 2025 pm 09:18 PM

2025年の香港のトップは、包括的なエコシステムを持っていますそして透明。

See all articles