
Javaにガーベージコレクションってあるじゃん。重要そうなのですが、私の理解はイマイチです。ガーベージコレクションって何ですか?一言で言えば、ごみインスタンスなのかな。
以下は私独学の推測
インスタンスを作るとき、new Constructor();ってやるじゃん。だけど、これだけだとガーベージコレクションになって、そのうち自動的にインスタンスが消えるのかな?
インスタンスを残そうとすると、左辺が重要である。
◯ City tokyo=new City();(左辺=右辺;の形)
× new City();(右辺;の形で、左辺=を省略している)
恒久的インスタンスにしようとすると、左辺で変数のクラス型と変数名を指定して、右辺の受け皿(代入先)を用意する。City型のインスタンスを作るだけなら、左辺を省略してnew City();だけで十分。しかし、これだとガーベージコレクションになって、すぐ消える。
正しい?
No.2ベストアンサー
- 回答日時:
ガベージコレクションは、メモリ管理機能です。
プログラム上で使用しなくなったオブジェクト(インスタン
ス)を探して、メモリ上から削除するという動作をします。
例えば、
City tokyo=new City();
tokyo = null;
というコードを書いた場合、tokyo = null; の実行後は City
オブジェクトは使われません(使えません)。このようなオブ
ジェクトはガベージコレクションが自動的に判別してメモリ
上から削除します。
また、例えば
if (hoge == 0) {
City tokyo=new City();
}
というコードを書いた場合、if 文のスコープを抜けた後では
City オブジェクトは使われません(使えません)。このような
オブジェクトはガベージコレクションが自動的に判別してメ
モリ上から削除します。
このように、スコープを外れたり参照変数に null を突っ込ま
れたりして、どこからも参照されなくなった(使われなくなっ
た)オブジェクトを自動的に探してメモリ上から削除する機能
がガベージコレクションです。
※注意点として、ガベージコレクションは『オブジェクトが使
われなくなったら即消す』ということはしません。JAVA の
好きなタイミングで消します。
No.4
- 回答日時:
一言でいえば、メモリリーク防止装置。
魚の目に水見えず、人の目に空見えず、Javaプログラマの目にガーベージコレクション見えず。ガーベージコレクションの重要性を知りたければ、一旦Javaを離れてガーベージコレクションがしていることを自分でやってみるのが良いでしょう。
ちょっとC言語を勉強し、malloc()を多用するプログラムを探してきてソースを読み、正常に処理するときもエラーが起きたときも間違うことなく全てのヒープメモリをfree()するために、C言語プログラマが細心の注意を払わなければならないことが実感できると、Javaのガーベージコレクションの便利さが見えてくると思います。
No.3
- 回答日時:
ちょっと違いますね。
あなたの言う「ごみインスタンス」そのものではなくって、そのごみインスタンスを消すための仕組みがガーベージコレクションです。
これにはただインスタンスを消すだけじゃなくって、あるインスタンスを消してもいいかどうかを判断する機能も含まれます。
あと、細かいことですが、
> × new City();
> これだとガーベージコレクションになって、すぐ消える。
というのも間違いでです。
あるインスタンスがどこからも参照されていない状態になったとしても、それで即時に消されるとは限りません。あくまでも消されるかもしれないインスタンスになったというだけで、いつ消されるかはガーベージコレクションの都合によります。下手をするとプログラムが終了するまで残っている可能性もあります。
No.1
- 回答日時:
塵拾いです。
不要になった細切れのエリヤをなるべく連続エリヤとして集めて再度のエリヤ要求に応えられるようにする作業。細切れの空きエリヤしかない状態で大きな連続エリヤを要求されると、それに応えるべく使用中のエリヤのデータを移動したりして大きな連続エリヤを確保しようとします。こういう事態が起こると数分間とか数十分間とかそれにかかりきりになる事も。PCなど事務用ならいいかも知れませんが、実時間制御のシステムでは使えません。飛行機なら墜落します。お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 高校 方程式の証明 5 2022/05/12 09:29
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- その他(ソフトウェア) Figma 1 2023/06/23 14:22
- Java インスタンス ダウンキャストについて以下の解釈であっているか教えて欲しいです。 サブクラスをスーパー 1 2022/03/27 18:53
- その他(プログラミング・Web制作) このプログラミングをどう組みますか? Googlecolabでやってるんですが、出来る方お願いします 1 2022/07/13 10:52
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/17 18:41
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/06 09:28
- 数学 1^2+2^2+…+n^2<(n+1)^3/3を数学的帰納法を用いて証明してください。解法を見てもよ 5 2023/06/14 17:11
- 数学 2階非線形微分方程式の右辺が{e^(-x)}√xになってしまったのですが特殊解はどのように見つけたら 1 2022/11/14 22:04
- 化学 化学基礎 イオン反応式 Al + H+ →Al3+ + H2 回答 2Al + 6H+ → 2Al3 1 2022/11/27 20:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数名の付け方
-
private static という変数の修飾
-
C# インスタンスの破棄
-
newしないインスタンス?実体化...
-
生成したインスタンスを削除す...
-
インスタンス参照でアクセスで...
-
複数クラスで共通の関数、変数...
-
JAVA ArrayListからArrayList...
-
「インスタンス」の意味をわか...
-
マルチスレッドでのインスタン...
-
Visual Basic アクセス範囲外?
-
C#のメモリ解放についてご教授...
-
教えてください。
-
C#のスレッド処理について、ご...
-
データベースから日付型を取得...
-
ガーベージコレクション?
-
オブジェクト指向に関して。
-
Eclipse3でVisualEditorが起動...
-
javaのクラスの作り方、エラー...
-
SerialPort処理でInvokeメソッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
private static という変数の修飾
-
変数名の付け方
-
複数の変数を宣言する時、同時...
-
インスタンス参照でアクセスで...
-
C# インスタンスの破棄
-
C#において、同じインスタンス...
-
オブジェクト参照がオブジェク...
-
生成したインスタンスを削除す...
-
VB.NET getとsetの概念がわかり...
-
javaのクラスの作り方、エラー...
-
変数の参照でエラーが出てしま...
-
「インスタンス」の意味をわか...
-
インスタンスを同じ名前で作成...
-
newしないインスタンス?実体化...
-
フォームの存在をチェックする方法
-
String a = "a"; と String b =...
-
C#のメモリ解放についてご教授...
-
vb.netでFAXを送信する方法
-
他のファイルの変数参照
-
Delphiでインスタンスが作成さ...
おすすめ情報