匿名クラスインスタンスで使用される参照されていないオブジェクトは期限切れになりませんか?

ジル

このコードを想定します。

public class Foo {

    public static Thread thread;
    public String thing = "Thing!!";

    public static void main(String[] args) {
        new Foo().makeThread();
        // <- Foo object may get garbage collected here.
        thread.start();
    }

    private void makeThread() {
        thread = new Thread(new Runnable() {
            @Override
            public void run() {
                // !! What if the instance of Foo is long gone?
                System.out.println(thing);
            }
        });
    }
}

ここで、一時オブジェクトnew Foo()、の匿名実装でThread thread結合されたインスタンスを利用する静的に保持されたものを作成します有効期限が切れた後ガベージコレクションを取得しますか、それとも内で使用するために存続しますか?どうして?String thingRunnableString thingnew Foo()run()

セルゲイ・カリニチェンコ

静的変数からオブジェクトにつながる参照のチェーンがあるため、文字列はthreadnullまたは他の何かに設定されるまでガベージコレクションされませんThread

参照のチェーンは次のようになります。

static threadFooから派生した匿名クラスのインスタンスを介して作成されたインスタンスを暗黙的に参照しますRunnable次に、のインスタンスはFooへの参照を保持thingし、オブジェクトがガベージコレクションされないようにします。

Fooのインスタンスが長い間なくなった場合はどうなりますか?

FooThreadオブジェクトからの暗黙の参照によってライブに保たれるため、どこにも行きません

注:この回答は、String文字列リテラルから作成されたオブジェクトのインターンの影響を意図的に無視しています。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

匿名クラスインスタンスで使用される参照されていないオブジェクトは期限切れになりませんか?

分類Dev

オブジェクト参照がオブジェクトのインスタンスに設定されていません。.NETでどのオブジェクトが `null`であるかが表示されないのはなぜですか。

分類Dev

セッションパラメータで「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが発生し、nullではないのはなぜですか?

分類Dev

「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というメッセージが表示されるのはなぜですか。しかし、コードの行は関係していませんか?

分類Dev

SOAPWCFラップされたオブジェクト参照がオブジェクトのインスタンスに設定されていません

分類Dev

エラー:オブジェクト参照がオブジェクトのインスタンスに設定されていませんか?

分類Dev

「オブジェクト参照がオブジェクトのインスタンスに設定されていない」というタスクを使用する

分類Dev

"オブジェクト参照がオブジェクトインスタンスに設定されていません。" .Net2.0でResGenを実行する

分類Dev

オブジェクトのインスタンスに設定されていないエラーsystem.null参照例外オブジェクト参照を取り除くにはどうすればよいですか?

分類Dev

データリーダーは、オブジェクトからデータが抽出されるときに、オブジェクトのインスタンスに設定されていないオブジェクト参照を提供します

分類Dev

Azureパイプラインのオブジェクトのインスタンスにオブジェクト参照が設定されていません

分類Dev

編集したいときにオブジェクト参照がオブジェクトのインスタンスに設定されていませんか?

分類Dev

System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。スローエラー

分類Dev

Windowsサービスでオブジェクト参照がオブジェクトのインスタンスに設定されていません

分類Dev

Ubuntu 16.04でRiderを使用しているC#プロジェクトで、「プロジェクトが見つかりません」および「オブジェクト参照がオブジェクトのインスタンスに設定されていません」

分類Dev

エラー:オブジェクト参照がオブジェクトエラーのインスタンスに設定されていません

分類Dev

カスタムライブラリからオブジェクトを参照すると、エラーが発生します:「不完全なクラスタイプへのポインタは許可されていません」

分類Dev

応答時にオブジェクトエラーのインスタンスにオブジェクト参照が設定されていません

分類Dev

オブジェクト参照がオブジェクトインスタンスに設定されていません。サイトコアで

分類Dev

Logging Serviceの使用時に、オブジェクト参照がオブジェクトのインスタンスに設定されていません

分類Dev

Sub(VB)を使用してクラス間で文字列を渡すときに、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」エラーを受信する

分類Dev

ASPNETCOMPILER(0,0):エラーASPRUNTIME:オブジェクト参照がオブジェクトのインスタンスに設定されていません

分類Dev

SQL Server 2012エラー:オブジェクト参照がオブジェクトのインスタンスに設定されていません

分類Dev

EFコア移行エラー:オブジェクト参照がオブジェクトのインスタンスに設定されていません

分類Dev

オブジェクト参照がオブジェクトインスタンスに設定されていません?(例外エラー〜ASP.NET MVC)

分類Dev

オブジェクト参照がオブジェクトインスタンスに設定されていません?(例外エラー〜ASP.NET MVC)

分類Dev

オブジェクト参照がc#のオブジェクトエラーのインスタンスに設定されていません

分類Dev

エラーオブジェクト参照がvbのオブジェクトのインスタンスに設定されていません

分類Dev

Html.ListBoxForオブジェクト参照がオブジェクトのインスタンスに設定されていませんエラー

Related 関連記事

  1. 1

    匿名クラスインスタンスで使用される参照されていないオブジェクトは期限切れになりませんか?

  2. 2

    オブジェクト参照がオブジェクトのインスタンスに設定されていません。.NETでどのオブジェクトが `null`であるかが表示されないのはなぜですか。

  3. 3

    セッションパラメータで「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが発生し、nullではないのはなぜですか?

  4. 4

    「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というメッセージが表示されるのはなぜですか。しかし、コードの行は関係していませんか?

  5. 5

    SOAPWCFラップされたオブジェクト参照がオブジェクトのインスタンスに設定されていません

  6. 6

    エラー:オブジェクト参照がオブジェクトのインスタンスに設定されていませんか?

  7. 7

    「オブジェクト参照がオブジェクトのインスタンスに設定されていない」というタスクを使用する

  8. 8

    "オブジェクト参照がオブジェクトインスタンスに設定されていません。" .Net2.0でResGenを実行する

  9. 9

    オブジェクトのインスタンスに設定されていないエラーsystem.null参照例外オブジェクト参照を取り除くにはどうすればよいですか?

  10. 10

    データリーダーは、オブジェクトからデータが抽出されるときに、オブジェクトのインスタンスに設定されていないオブジェクト参照を提供します

  11. 11

    Azureパイプラインのオブジェクトのインスタンスにオブジェクト参照が設定されていません

  12. 12

    編集したいときにオブジェクト参照がオブジェクトのインスタンスに設定されていませんか?

  13. 13

    System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。スローエラー

  14. 14

    Windowsサービスでオブジェクト参照がオブジェクトのインスタンスに設定されていません

  15. 15

    Ubuntu 16.04でRiderを使用しているC#プロジェクトで、「プロジェクトが見つかりません」および「オブジェクト参照がオブジェクトのインスタンスに設定されていません」

  16. 16

    エラー:オブジェクト参照がオブジェクトエラーのインスタンスに設定されていません

  17. 17

    カスタムライブラリからオブジェクトを参照すると、エラーが発生します:「不完全なクラスタイプへのポインタは許可されていません」

  18. 18

    応答時にオブジェクトエラーのインスタンスにオブジェクト参照が設定されていません

  19. 19

    オブジェクト参照がオブジェクトインスタンスに設定されていません。サイトコアで

  20. 20

    Logging Serviceの使用時に、オブジェクト参照がオブジェクトのインスタンスに設定されていません

  21. 21

    Sub(VB)を使用してクラス間で文字列を渡すときに、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」エラーを受信する

  22. 22

    ASPNETCOMPILER(0,0):エラーASPRUNTIME:オブジェクト参照がオブジェクトのインスタンスに設定されていません

  23. 23

    SQL Server 2012エラー:オブジェクト参照がオブジェクトのインスタンスに設定されていません

  24. 24

    EFコア移行エラー:オブジェクト参照がオブジェクトのインスタンスに設定されていません

  25. 25

    オブジェクト参照がオブジェクトインスタンスに設定されていません?(例外エラー〜ASP.NET MVC)

  26. 26

    オブジェクト参照がオブジェクトインスタンスに設定されていません?(例外エラー〜ASP.NET MVC)

  27. 27

    オブジェクト参照がc#のオブジェクトエラーのインスタンスに設定されていません

  28. 28

    エラーオブジェクト参照がvbのオブジェクトのインスタンスに設定されていません

  29. 29

    Html.ListBoxForオブジェクト参照がオブジェクトのインスタンスに設定されていませんエラー

ホットタグ

アーカイブ