2016-09-14 8 views
0

私はJavaのガベージコレクションherehereについて読んでいました。私はまだ2つの質問があります。System.Exitの後のガベージコレクション

  1. は、私は次のクラスに

    public final class Employee { 
    
    private final String empID; 
    private final String empFirstName; 
    private final String empLastName; 
    
    public Employee(String ID, String Firstname, String Lastname) 
    { 
        this.empID = ID; 
        this.empFirstName = Firstname; 
        this.empLastName = Lastname; 
    
    } 
    
    public String getEmpID() { 
        return empID; 
    } 
    
    public String getEmpFirstName() { 
        return empFirstName; 
    } 
    
    public String getEmpLastName() { 
        return empLastName; 
    } 
    

を持っていると私はArrayListに私の従業員オブジェクトを追加するとします。私はSystem.exit(0)を呼び出すした場合、GCがメモリを解放するために実行しない場合さて、最後の従業員オブジェクトは、挿入された直後

List<Employee> empList = new ArrayList<Employee>(); 

empList.add(new Employee("1", "Sally","Solomon")); 
empList.add(new Employee("2", "Harry","Solomon")); 

  1. 提供されたリンクの1つで、GCと静的変数について説明しています。私はGCコンセプトには少し新しく、ちょっと混乱しています。このリンクでは、静的変数はガベージコレクションされません。静的変数を使用する場合、どのようにメモリを解放しますか?アプリケーションが終了してもメモリは解放されますか?

答えて

3

私は最後の従業員オブジェクトがメモリを解放するためにGCの実行を行う際に、挿入された後System.exit(0)権利をコールした場合?

JVMが終了すると、メモリを解放するために独自のガベージコレクタを実行する必要はありません。オペレーティングシステムは、プロセスが終了したときにプロセスのメモリを再利用します。

これはJVM固有のものではありません。

静的変数を使用するときにどのようにメモリを解放しますか?

これらの静的オブジェクトを無効にするか、または参照を削除することができます。他にもいくつかの可能性があります:Are static fields open for garbage collection?

アプリケーションが終了してもメモリは解放されますか?

ありますが、必ずしもJVMのGCである必要はありません。 OSはそれを処理します - それはその仕事の一部です。

関連する問題