私はこのテストプログラムを書きました。
import java.io.Console;
public class ConsoleTest{
public static void main(String[] args) {
// TODO Auto-generated method stub
Console console = System.console();
System.out.println("ConsoleTest initialising... \n Enter command : ");
String line = "";
if(console!=null){
while ( (line = console.readLine())!= null ){
System.gc();
System.out.println("your input : " + line);
if("exit".equalsIgnoreCase(line)){
System.out.println("Bye ~");
System.exit(0);
}else{
System.out.println("Enter command : ");
}
}
}else{
System.out.println("No console found");
}
}
}
この質問を書いている間も、プログラムに何もせずに、ヒープメモリの使用量が絶えず増加しているのを見ました。
また、[GC の実行] ボタンをクリックするたびに、Windows タスク マネージャーは、プログラムが少し多くのメモリを使用していることを示します。
コードに何か問題がありますか? それともこれは正常な動作ですか?
編集
後で、メモリヒープ使用量グラフがより長い時間スケールで定期的に変動することがわかりました。
なぜそうなるのかはわかりませんが、それは別の問題だと思います。
もう 1 つ質問すると、Java Monitor のヒープ使用量と Windows タスク マネージャーに表示されるメモリ使用量に大きな違いが見られました。
Java Monitor のヒープ使用量は、Eclipse プロセスで約 300MB を示しました。
Windows タスク マネージャーでは、900MB 程度です。
この違いは、ヒープ使用量にスタック メモリ使用量が含まれていないためですか?