なぜSystem.gc()を呼び出すのが悪い習慣なのですか?
Javaでオブジェクトを強制的に解放する方法についての質問に答えた後(男は1.5GBのHashMapをクリアしていました)、手動で呼び出すのは悪い習慣だと言われましたが、コメントは完全には説得力がありませんでした。さらに、私の回答に賛成票を投じたり、反対票を投じたりする人はいなかったようです。System.gc()System.gc() そこは悪い習慣だと言われましたが、ガベージコレクターの実行によって世界が体系的に停止することはなく、JVMがヒントとしてのみ効果的に使用できることも伝えられたので、途方に暮れる。 通常、JVMがメモリを再利用する必要がある場合、JVMはあなたよりもよく知っていることは理解しています。また、数キロバイトのデータを心配するのはばかげていることも理解しています。メガバイトのデータでさえ、数年前のデータではないことも理解しています。しかし、それでも1.5ギガバイトですか?そして、あなたは知っているメモリにぶらぶらデータの1.5ギガバイトのようにあります。それは暗闇の中でのショットのようではありません。でSystem.gc()体系的に悪い、またはそれは大丈夫になった時に、いくつかのポイントがありますか? したがって、質問は実際には二重です: なぜ電話をするのが悪いのSystem.gc()ですか?それは本当に特定の実装でのJVMへのヒントにすぎないのですか、それとも常に完全な収集サイクルですか?世界を止めることなく作業を実行できるガベージコレクターの実装は本当にありますか?私の回答へのコメントで人々が行ったさまざまな主張にいくつかの光を当ててください。 しきい値はどこですか?を呼び出すのは良い考えではありませんSystem.gc()か、それとも許容できる場合がありますか?もしそうなら、それらの時間は何ですか?