0

以下のようなサンプルコードを考えてみましょう

class Employee 
{
    int id;
    String name;
}

Employee e = new Employee(1, "NewEmployee");

上記のコードでは、従業員オブジェクトのヒープ メモリの割り当てが最初に行われ、次にその参照がスタック参照に割り当てられると想定していますe

上記は有効ですか、それともここで何か深いことが起こりますか?

はいの場合、ヒープにメモリが作成された直後、その参照が に割り当てられる直前にe、GC が起動し、GC ルートからこの新しいヒープ メモリへの参照がないことを確認します。

  1. GC はこのリソースをクリーンアップしますか?
  2. JVM/CLR がこれらのシナリオを処理し、この種のメモリ破損を回避する方法はありますか?

Java と C# の両方にタグを付けると、Java と C# の両方の Mark and Sweep の場合のクリーンアップのロジックはほぼ同じように見えます (少なくとも、未使用のオブジェクトをルートから識別してクリーンアップするという点では)。

4

1 に答える 1