Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaでガベージコレクター(GC)を呼び出す方法はいくつありますか?


Javaのガベージコレクションは、デーモンスレッドによって実行されます。 ガベージコレクター(GC)と呼ばれます。 JVMがガベージコレクターを実行するまで待つ代わりに、JVMにガベージコレクターを実行するように要求できます。 JVMが要求を受け入れるかどうかの保証はありません。

Javaでは、2つの方法でガベージコレクターを手動で呼び出すことができます

  • システムクラスを使用する
  • ランタイムクラスを使用する

システムクラスを使用する

システム クラスには静的メソッドgc()があります 、これは、JVMにガベージコレクターを呼び出すように要求するために使用されます。

public class SystemClassTest {
   public static void main(String[] args){
      SystemClassTest test = new SystemClassTest();
      test = null;
      System.gc();
   }
   public void finalize() {
      System.out.println("Garbage collected");
   }
}

出力

Garbage collected


ランタイムクラスを使用する

ランタイム シングルトンクラスです Javaでは、 getRuntime()を使用してランタイムオブジェクトを取得できます。 方法。 gc() メソッドはランタイムからのものです クラスであり、インスタンスメソッドです。

public class RuntimeClassTest {
   public static void main(String[] args) {
      RuntimeClassTest test = new RuntimeClassTest();
      test = null;
      Runtime.getRuntime().gc();
   }
   public void finalize() {
      System.out.println("Garbage Collected");
   }
}

出力

Garbage collected

  1. Javaでメソッドのオーバーライドを防ぐ方法はいくつありますか?

    メソッドのオーバーライド Javaのランタイムメソッドバインディング機能のために機能します。したがって、Javaコンパイラにメソッドの静的バインディングを強制する場合、そのメソッドが派生クラスでオーバーライドされるのを防ぐことができます。 Javaでのメソッドのオーバーライドを3つの方法で防ぐことができます 基本クラスでメソッドをfinalにすることによって 基本クラスでメソッドを静的にすることによって 基本クラスでメソッドをプライベートにすることによって 最終的なメソッドはオーバーライドできません メソッドをfinalにすることで、派生クラスがこの特定のメソッドをオーバーライドできな

  2. Javaでサブパッケージを使用する方法は?

    サブパッケージはサブディレクトリに似ています。例を考えてみましょう。同社には、Dell.javaソースファイルを含むcom.apple.computersパッケージがあり、このような一連のサブディレクトリに含まれていました- ....\com\apple\computers\Dell.java コンパイル時に、コンパイラーは、クラス、インターフェース、および列挙型で定義されているものごとに異なる出力ファイルを作成します。出力ファイルのベース名はタイプの名前であり、その拡張子は.classです。 例- // File Name:Dell.java package com.apple.compu