skillup

技術ブログ

Java

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

投稿日:

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

ガベージコレクタとは?

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

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

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

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

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

1 nullを代入

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

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

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

finalize()メソッドの定義

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

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

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

-Java

執筆者:


comment

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

関連記事

no image

String,Integer,Booleanの相互変換

データベースにはbooleanでデータが入っているのに画面では0か1の数字でないと表示ができないときなどがあると思います。 そんな時に文字列と論理値、あるいは文字列と数値、数値と論理値の変換などをする …

no image

JPAのdetach

このブログで何回か書いてきたんですが、JPAを使うときにpersisit=insert,merge=updateではないです。 参考リンク JPAまとめ JPAでのデータベースとの同期 実はJPAでf …

no image

設定ファイルの置き場所

一般的にレベルの高いソースとは保守性が高いものを指します。特にWEB系ですと仕様変更がしょっちゅうなので変更があったときにいかに少ない工数で対応できるかが大切です。 保守性をあげる工夫はいろいろありま …

no image

CSVの保存、文字列としての出力

前回のエントリーではJSfでのCSVダウンロードについて書きましたが、実際にCSVの配列を作る処理について書きます。 CSVのアップロードの時に使ったのと同じCommonsCSVを使います。 Cont …

no image

Listの簡便な書き方

このエントリーともかぶりますが、リストにクラスを代入するときの簡便な書き方の紹介です。 名前と年齢のプロパティをもつ簡単なクラス(Hoge)をListに格納しようとします。 普通に書くと [crayo …