Web サイトで作成したゲームのハイスコアをホストする Java ベースのコマンドライン サーバーを実行しています。それは効率的かつ迅速に機能します。ただし、約 200MB の RAM を使用します。すべてを手動で無効にすることから System.gc() を呼び出すことまで、すべてを試しました
これは、ソケット接続から使用する入力ストリーム オブジェクトと出力ストリーム オブジェクトに関係があるのではないかと疑い始めています。プログラムを最初に実行したときに、通常の量の RAM を占有していることに気付きました。その後、接続が確立されると、100MB にジャンプし、接続ごとに増加し続けます。
編集: 私のクラスの 1 つで、すべての名前、スコア、タイムスタンプを 3 つの異なる ArrayLists に保持しています。ただし、jhat と jmap を使用して徹底的に調べたところ、これらを組み合わせても約 5MB の RAM しか使用しないことがわかりました。
これが漠然としていて誰にも答えられない場合は、質問してください。喜んでソース コードを提供します。