ホームページ Java &#&ベース Java における「弱い」参照とは何なのかを見てみましょう。

Java における「弱い」参照とは何なのかを見てみましょう。

Jan 06, 2021 pm 06:10 PM
java

Java 基本チュートリアル コラム紹介 Java の「弱い」名言

Java における「弱い」参照とは何なのかを見てみましょう。

推奨(無料): java 基本チュートリアル

Java でオブジェクト obj が作成されると、それはヒープ上に配置されます。 GC が実行され、obj を指す参照が存在しないことが判明すると、obj オブジェクトのヒープ メモリ領域が再利用されます。

#つまり、オブジェクトがリサイクルされるには、次の 2 つの条件を満たす必要があります。

(1) それを指す参照がない

(2) GCを実行します。

実際の開発では、次のように、オブジェクトを指すすべての参照を空にすることで、次回 GC が実行されるときにこのオブジェクトが確実にリサイクルされるようにすることができます。これは非常に面倒で、自動 GC リサイクルの原則に反します。単純な場合、プログラマーによる手動設定は必要ありません。Java では、単純なオブジェクトの場合、それを呼び出すメソッドが実行されると、それを指す参照がスタックからポップされるため、次の実行時にリサイクルされます。 GCの実行。

ただし、特別な例外があります。キャッシュを使用する場合、キャッシュ内のオブジェクトはまさにプログラムが実行する必要があるものであるため、プログラムが実行されている限り、キャッシュ内の参照は GC されません (言い換えれば、キャッシュ内 (参照のライフ サイクルはメイン プログラムと同じです) キャッシュ内の参照が増えるにつれて、GC でリサイクルできないオブジェクトや、自動的にリサイクルできないオブジェクトが増えます。これらのオブジェクトをリサイクルする必要がある場合、これらのオブジェクトのリサイクル作業はプログラマにのみ任せることができます。しかし、これはGC(リサイクルできるものは自動的にリサイクルする)の本質に反します。

つまり、弱い参照が Java に導入されました。

Object c = new Car();    
c=null;
オブジェクトが他の強参照がなく、弱参照によってのみ指されている場合、GC が実行されると、オブジェクトはリサイクルされます。

次はインターネットからの例です。最初にエンティティ クラスを定義します:

Object c = new Car(); //只要c还指向car object, car object就不会被回收 -->(强引用)
通常、WeakReference を使用する場合、クラスは WeakReference から継承するように定義され、他のいくつかの属性が定義されますこのクラスでは、他の属性は定義されていません:

public class Car {
    private double     price;
    private String    color;

    public Car(double price, String color)
    {
        this.price = price;
        this.color = color;
    }

    public double getPrice()
    {
        return price;
    }

    public String getColor()
    {
        return color;
    }

    public String toString()
    {
        return "This car is a " + this.color + " car, costs $" + price;
    }
}
main 関数が呼び出されます。もちろん、GC の効果をより明確に確認するには、仮想マシン パラメータ "-XX: PrintGCDetails" を設定します。

public class WeakReferenceCar extends WeakReference<Car>
{
    public WeakReferenceCar(Car car)
    {
        super(car);
    }
}
最後は実行結果です

public static void main(String[] args)
{
    Car car = new Car(2000.0, "red");
    WeakReferenceCar wrc = new WeakReferenceCar(car);
    wrc.setStr("111");
    int i = 0;
    while (true)
    {
        if (wrc.get() != null)
        {
            i++;
            System.out.println("WeakReferenceCar's Car is alive for " + i + ", loop - " + wrc);
        }
        else
        {
            System.out.println("WeakReferenceCar's Car has bean collected");
            break;
        }
    }
}
68454 サイクルの後、WeakReferenceCar に関連付けられたオブジェクト Car がリサイクルされていることがわかります。弱参照そのものではなく、wrc がリサイクルされます。

WeakReference の特性の 1 つは、いつリサイクルされるかが不確実であることです。これは、GC 操作の不確実性によって決定されるためです。したがって、一般に、弱参照によって参照されるオブジェクトは貴重であり、キャッシュされます。再構築が容易で、多くのメモリを消費するオブジェクト。

弱参照が指すオブジェクトがリサイクルされると、弱参照自体は実際には役に立たなくなります。Java は、これらを保存するための ReferenceQueue を提供します。リサイクルされたオブジェクトを指す参照。使用方法は、WeakReference.

を定義するときに、ReferenceQueue オブジェクトをパラメータとしてコンストラクターに渡すことです。

以上がJava における「弱い」参照とは何なのかを見てみましょう。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Stock Market GPT

Stock Market GPT

AIを活用した投資調査により賢明な意思決定を実現

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

JavaのClassPathにJARファイルを追加する方法は? JavaのClassPathにJARファイルを追加する方法は? Sep 21, 2025 am 05:09 AM

-CPパラメーターを使用してJARをClassPathに追加して、JVMがjava-cplibrary.jarcom.example.mainなどの内部クラスとリソースをロードできるようにします。

フォルダを見つける場所 フォルダを見つける場所 Sep 20, 2025 am 07:57 AM

最も直接的な方法は、通常はデスクトップ、ドキュメント、ダウンロードなどのフォルダーでストレージの場所を思い出すことです。見つからない場合は、システム検索機能を使用できます。ファイルの「欠落」は、主に保存パスの攻撃、名前メモリ偏差、ファイルの隠れ、またはクラウドの同期などの問題が原因です。効率的な管理の提案:プロジェクト、時間、タイプごとに分類し、迅速なアクセスを適切に使用し、定期的にクリーンでアーカイブし、命名を標準化します。ファイルエクスプローラーとタスクバーを検索および検索しますが、MacOSはFinderとSpotlightに依存しています。これはよりスマートで効率的です。ツールを習得し、良い習慣を開発することが重要です。

Javaでファイルを作成する方法 Javaでファイルを作成する方法 Sep 21, 2025 am 03:54 AM

usefile.createNewfile()tocreatefileonlyifitdoes notexist、avolididingoverwriting;

Java GenericsとWildcardsの理解 Java GenericsとWildcardsの理解 Sep 20, 2025 am 01:58 AM

javagenericsprovideCompile-timeTypeSafeTypeTypeTypeTypeTypeTypeTypeTypeTypeTypeTypeTypeTypeTypeTypeTyParaMetersonClasses、interfaces、and methods; wildcards(?、extendStype、?supertype)HeandnwondTypeswithFexibility.1.1.UnunboundCardCardCardCardCardCardCardCardCardCardCardの装備

Google Chromeはこのページをロードできません Google Chromeはこのページをロードできません Sep 20, 2025 am 03:51 AM

最初に、ネットワーク接続が正常かどうかを確認します。他のWebサイトを開くことができない場合、問題はネットワーク上にあります。 1.ブラウザのキャッシュとCookieをクリアし、Chromeの設定を入力して、閲覧データをクリアします。 2。拡張機能を閉じると、スカレッレスモードを使用して、プラグインの競合によって引き起こされるかどうかをテストできます。 3.ネットワーク接続が傍受されないように、プロキシまたはVPN設定を確認して閉じます。 4. Chromeネットワーク設定をリセットし、デフォルトの構成を復元します。 5.互換性の問題を解決するために、Chromeを最新バージョンに更新または再インストールします。 6.他のブラウザを使用して比較およびテストして、問題がChromeのみであるかどうかを確認します。 err_connection_timed_outやerr_ssl_protocol_erなどのエラープロンプトに応じて

UC Browser_uc Browserの強制スケーリングWebページでWebページを強制する方法UCブラウザーによるスケーリングWebページ UC Browser_uc Browserの強制スケーリングWebページでWebページを強制する方法UCブラウザーによるスケーリングWebページ Sep 24, 2025 pm 04:54 PM

まず、UCブラウザの組み込みスケーリング関数を有効にし、設定→[設定]→[フォントと版画]またはページスケーリングを参照し、プリセット比またはカスタムパーセンテージを選択します。第二に、2本の指でジェスチャーを開いたりピンチしたりすることにより、ページディスプレイサイズを強制することができます。スケーリングを制限するWebページの場合、Webサイトのデスクトップバージョンに制限のロックを解除することを要求できます。上級ユーザーは、アドレスバーでJavaScriptコードを実行して、より柔軟な強制スケーリング効果を実現することにより、ViewPort属性を変更することもできます。

なぜリアルタイムシステムが決定論的応答を保証する必要があるのですか? なぜリアルタイムシステムが決定論的応答を保証する必要があるのですか? Sep 22, 2025 pm 04:03 PM

リアルタイムシステムには、正確性が結果配信時間に依存するため、決定論的応答が必要です。ハードリアルタイムシステムには厳格な締め切りが必要であり、逃したことは災害につながりますが、ソフトリアルタイムは時折遅延を可能にします。スケジューリング、割り込み、キャッシュ、メモリ管理などの非決定的要因はタイミングに影響します。建設計画には、RTOの選択、WCET分析、リソース管理、ハードウェアの最適化、厳密なテストが含まれます。

Javaで呼び出しメソッドの名前を取得する方法は? Javaで呼び出しメソッドの名前を取得する方法は? Sep 24, 2025 am 06:41 AM

答えは、thread.currentthread()。getStackTrace()を使用してコールメソッド名を取得し、インデックス2から別のコールのソモメトッド名を取得することです。インデックス0はgetStackTraceであるため、1は現在のメソッドであり、2は発信者であり、2は例です。 インパクト。

See all articles