skillup

技術ブログ

Java

ガベージコレクタに関して

投稿日:

本日はガベージコレクタに関して。

ガベージコレクタとは?

JavaはCなどと違い、JVM自体がメモリの確保や解放をするため、プログラマがメモリの解放や確保をコードで書く必要はありません。

メモリの解放はJavaの実行環境上で稼動しているガベージコレクタと呼ばれるプログラムが行っています。プログラムが使用しなくなったメモリ領域を検出し、解放します。

オブジェクトがどこからか参照されている間はガベージコレクタの対象になることはありません。

参照されなくなることで、ガベージコレクタの対象となります。

オブジェクトの参照を取り除く方法は2つあります。

1 nullを代入

プログラムの中で明示的にこの変数はオブジェクトを参照しないということを表現するためにnullを使います。

2 参照変数を他のオブジェクトに割り当てる

オブジェクトを参照している変数に、新たなオブジェクトを割り当てたことで、元のオブジェクトがどこからも参照されなくなったら、ガベージコレクタの対象になります。

finalize()メソッドの定義

finalize()メソッドはガベージコレクタによってオブジェクトが破棄される寸前にJavaの実行環境から必ず呼び出されるメソッドです。

したがって、そのオブジェクトが使っていたリソースを解放するといった処理です。

このメソッドの実行自体はJavaの実行環境自体にゆだねられているため、タイミングは保障できません。

-Java

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

Javaでのログ出力 基礎編

Javaでのログ出力についてようわかってなかったので基礎から調べました。 Contents1 目的2 設定3 ソース4 出力5 リンク 目的 プログラムの実行過程を把握するため System.out. …

no image

依存関係エラー

JavaEEで新PCでビルドしたらいきなりエラー。同一のソースを別PCで動かすと正常に立ち上がります。 こんな場合、GlassFishの設定がおかしいか、ライブラリの依存関係に問題があることがほとんど …

no image

try-with-resourceの使い方

先日ファイル入出力の処理をいろいろと書いていたところ、例外処理について社長からアドバイスをいただきました。 Contents1 ファイルの入出力について2 try-with-resource3 参考リ …

no image

開発環境と本番での設定ファイル変更

開発と本番で設定ファイル自体(web.xmlなど)はわけると思うのですが、以前はわからず、開発のものと本番のものを手動でわけていました。 Javaでどうやってやるかを調べたところ、pomにかなり便利な …

no image

フィールド以外のプロパティをエンティティに持たせる

JPAでは基本的に1テーブル、1クラスです。 このためプロパティは必然的にテーブルのフィールドに対応しています。 ただ、必ずしもプロパティだけでなく、臨時で持たせておきたい、プロパティがあったりします …