入門!Javaのヒープメモリって何?【基本から応用まで解説】
Javaの世界における「ヒープメモリ」についてご存知でしょうか。
これは、Javaでプログラムを動かす上で絶対に避けて通れない要素です。
今回の記事では、Java初心者の方を対象に、「ヒープメモリ」について基本から応用まで分かりやすく解説していきます!
基礎!ヒープメモリとは何か?
Javaの「ヒープメモリ」は、オブジェクトや配列など動的なデータを格納するためのメモリ領域のことを指します。
要するに、プログラム実行中に作られるデータの「保管場所」の一つです。
ヒープメモリは、新しいオブジェクトが作成されるたびに消費され、Garbage Collectorによって不要なオブジェクトがクリアされる時に解放されます。
深掘り!Garbage Collector(GC)とは?
「Garbage Collector(GC)」は、ヒープメモリにおいて、もう使用されなくなったオブジェクト(ガベージ)を自動的に探し出し、メモリを解放する役割を担っています。
GCはメモリ管理を自動化してくれるので、プログラマがメモリ管理についてあまり心配することなく、コーディングに集中できます。
KindleUnlimited会員であれば、全ての本をご覧頂けます。 StreamAPIを理解すれば、Javaの世界が変わる 第1版
実践!ヒープメモリの動きを理解しよう
step
1ソースコードの実例を見て、実際にどう動くのか確認しましょう!
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 |
import java.util.ArrayList; import java.util.List; public class Program { public static void main(String[] args) { List<String> list = new ArrayList<>(); for (int i = 0; i < 10; i++) { list.add("Data " + i); } System.out.println(list); } } |
このプログラムは、1から10までの数字を文字列としてArrayListに追加し、その内容を出力するシンプルなコードです。
ヒープメモリ上にArrayListオブジェクトが生成され、その中に10個のStringオブジェクトが格納されます。
出力結果 [Data 0, Data 1, Data 2, Data 3, Data 4, Data 5, Data 6, Data 7, Data 8, Data 9]
応用!メモリリークに要注意
JavaではGCがあるおかげでメモリ管理が楽ですが、うまく設計されていないプログラムは「メモリリーク」を起こす可能性があります。
メモリリークとは、本来解放されるべきメモリが解放されずに占有され続け、最終的にはシステムに重大な問題をもたらす現象です。
ポイント
きちんとオブジェクトが不要になったタイミングで参照を切ることが、メモリリークを防ぐポイントになります!
まとめ:ヒープメモリとその管理について理解しよう!
本記事では、Javaの「ヒープメモリ」と「Garbage Collector」について基本から応用まで解説しました。
メモリの動きを理解することで、プログラムがどのように実行されているかが見えてきますよ!
これからもっとJavaを深掘りして、上手なプログラム作りを目指しましょう!