skillup

技術ブログ

Java

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

投稿日:

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

ガベージコレクタとは?

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

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

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

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

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

1 nullを代入

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

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

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

finalize()メソッドの定義

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

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

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

-Java

執筆者:


comment

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

関連記事

no image

netbeansのJPQL補助機能

JPAでは基本的に生のSQLではなく、JPQLを使って書きます。 SQLでもタイプミスにイライラさせられることは多いのですが、JPQLはもっとですね・・・爆 そこで使えるのがNetbeansの入力補助 …

no image

JPAを使用する  JavaSE編

現在の開発ではデータベースへの接続ではJPAを使っています。このJPAがなかなか曲者でいろいろと詰まることがありましたので解説させていただきます。 Contents1 JPAとは?1.1 メリット1. …

no image

JavaEEとは?

JavaEEのブログといいつつ、JavaEEについて全然書いていませんでした・・・ ちょっとJavaEEについて書かせていただきます。 Contents1 そもそもJavaとは?1.1 Javaの定義 …

no image

Messageプロパティの設置方法

JavaEEに限らず、エラーメッセージなどは通常、プログラムの中に書くのではなく、できればエラーメッセージファイルの中で管理するのが望ましいでしょう。 またJSF側の名称の表示なども直接xhtmlの中 …

no image

glassfishへのデプロイ

いつもJavaEE環境のローカル開発ではNetbeansで動かしてますんで、デプロイに関してglassfishのことをほとんど知らなくても動かせます。 開発や本番環境化では当然そういうわけには行かない …