このサイトで Java アプリのメモリ制限に関する多くの投稿を検索して読みました。推奨されないことはわかっていますが、アプリケーションで使用される最大 RAM を本当に制限する必要がある場合は. どうすればいいですか?
私の現在のアプリケーションは、Oracle tutorial
サイトから取得されます。Knock Knock Serverサーバーを実行し続け、クライアントからサーバーにメッセージを送信し続け、 を使用してメモリ使用量を監視しましたTask Manager
。メッセージを送信するたびにメモリが増え続けていることに気付きました。System.gc();
andについても学びRuntime.gc();
、メモリ消費を削減できることを期待していましたが、残念ながらそうではありませんでした。予想通り。
ServerSocket serverSocket = new ServerSocket(portNumber);
Socket clientSocket = serverSocket.accept();
PrintWriter out =
new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream()));
これらのコマンドのいずれかでコマンドを使用できますgc()
か? -Xmxと-Xmsも同様に機能することを期待して試しました。
最後に、単純な Java サーバーを作成するのが得策でない場合。私は何をすべきか?
編集:私は と を使用-Xms9m
して-Xmx10m
います。そして、アプリを10MBで実行し続けたいのですが、最初に起動したとき. 14MB から 17MB まで、そこから 20MB を超えて増加し続けることができます。