skillup

技術ブログ

Java

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

投稿日:

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

ガベージコレクタとは?

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

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

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

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

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

1 nullを代入

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

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

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

finalize()メソッドの定義

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

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

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

-Java

執筆者:


comment

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

関連記事

no image

JSF リダイレクト後のメッセージ&disabled=true

少々細かいですがJSFネタです。 Contents1 リダイレクト後のメッセージ2 h:commandbutton disabled=trueについて リダイレクト後のメッセージ JSFからManag …

no image

RedmineAPI活用法

自社ではRedmineで基本的にタスク管理をしておりまして、チケット作成に手当がついたりします。 Redmine単体でもいろいろな機能があるのですが、 今月の作成したチケットと完了したチケットを手当と …

no image

Seleniumの値基本動作まとめ

以前、「Seleniumでの画面テスト」というエントリーでのテストフレームワークとして、Seleniumを紹介しました。 上記のエントリーですが、単なるインストールと基本的な起動、簡単な文字入力ぐらい …

no image

配列の参照の仕方

変数が存在しているにもかかわらず値が入っていないときは、プログラミングではNULLという表記をします。(ちなみに空白が入っているのとは違います。) これはプログラマにとってはほぼ常識的な内容なのですが …

no image

リファクタリング

業務で大幅なリファクタリングをする機会があり、その際の注意だったり、気をつけるべきことなどをまとめておきます。 自分用なので自分にしかわからない言葉で書いてある可能性が大きいです。 気になる方は問い合 …

アーカイブ