我有一个基于 Java 的命令行服务器正在运行,它托管我在我的网站上制作的游戏的高分。它工作高效且快速。但是,它占用了大约 200MB 的 RAM!我已经尝试了从手动清除所有内容到调用 System.gc() 的所有方法
我开始怀疑这可能与我从 Socket 连接使用的输入流和输出流对象有关。我注意到,当我第一次运行该程序时,它会占用正常数量的 RAM。然后,一旦它获得连接,它就会跳到 100MB 并为每个连接不断变大。
编辑:在我的一门课程中,我将所有名称、分数和时间戳保存在 3 个不同的 ArrayList 中。但是,使用 jhat 和 jmap 进行的彻底检查表明,它们结合起来只使用了大约 5MB 的 RAM。
如果这对任何人来说都太模糊了,请询问,我很乐意提供源代码。