我的java程序有时会冻结,可能会出现内存泄漏。我的遥测有用吗?

我的java程序有时会冻结,可能会出现内存泄漏。我的遥测有用吗?,java,memory-leaks,runnable,httpsurlconnection,telemetry,Java,Memory Leaks,Runnable,Httpsurlconnection,Telemetry,我最近开始学习java(我现在有额外的空闲时间),并使用netbeans 8.2为一个名为撕裂的游戏编写代码。这段代码是一个可运行的代码,它可以从站点连续检索数据并将其存储以供以后使用。这是一次冻结的中途运行,我被告知为url连接添加连接超时和读取超时可能会有所帮助。我这样做了,它目前正在再次运行(到目前为止还不错),我正在等待,看看这个问题是否会再次发生 我的问题是查找内存泄漏。我读到幸存的世代数是是否存在内存泄漏的指标。这是在运行数小时后遥测的一个重要步骤。也可用(OtherPalitySS

我最近开始学习java(我现在有额外的空闲时间),并使用netbeans 8.2为一个名为撕裂的游戏编写代码。这段代码是一个可运行的代码,它可以从站点连续检索数据并将其存储以供以后使用。这是一次冻结的中途运行,我被告知为url连接添加连接超时和读取超时可能会有所帮助。我这样做了,它目前正在再次运行(到目前为止还不错),我正在等待,看看这个问题是否会再次发生


我的问题是查找内存泄漏。我读到幸存的世代数是是否存在内存泄漏的指标。这是在运行数小时后遥测的一个重要步骤。也可用(OtherPalitySStats.java是主类)。(关于改进我的代码的任何注释也是非常受欢迎的:D)。非常感谢您的帮助。

我想我终于找到了您的资源泄漏:在第154行的
LogPactivePersonalStat
中,您打开了一个带有
in=new BufferedReader(…
的文件,该文件从未关闭过

我建议你了解一下

同一文件中的代码(例如第128行到第130行)将从

    FileWriter file = new FileWriter("" + path + completed); //set completion status to incomplete
    file.write("0"); //zero means not yet complete
    file.close();

这不是一个很大的变化,但现在您不能忘记关闭
文件写入程序
(或
缓冲写入程序
缓冲读取程序


另一个注意事项:
RunUpdate
第53行看起来非常可疑(此模式重复了几次):

在这里,您为“从文件读取错误”创建了一个looger,但从未使用该记录器将任何内容写入日志

你可能是想写点什么

    Logger.getLogger(OtherFactionsStats.class.getName()).severe("Error: Possible timeout or problems with file");


这看起来不像内存泄漏-至少在8小时后无法识别。请看右上角的图表,蓝色部分:在整个8小时内,使用的内存可能在20 MB到50 MB之间波动。如果发生内存泄漏,这将是一条有上升趋势的曲线(这意味着在8小时之后,你测量的峰值会明显更高)这是一种解脱。还有一个问题..为什么幸存的几代人一直在增加..这让我感到困扰。感谢他们一直在增加,因为在你的主要方法中,你每5秒创建一个
新运行更新程序(派系路径);
service.scheduleAtFixedRate(可运行,0,5,时间单位。秒);
)有时这些RunUpdater会休眠近一个小时…据我所知,新实例直到第一个实例完成执行后才会创建..我还比较了遥测中的时间,在休眠期间,生成的次数保持不变..当超时发生时,它实际上会增加得更快..谢谢againI将研究戴上帽子,看看是否有什么变化。再次感谢你。解决了很多问题,但项目在大约40小时后仍然冻结。如果你想阅读我的新帖子:…谢谢你给予的所有帮助
    Logger.getLogger("Error reading from file");
    Logger.getLogger(OtherFactionsStats.class.getName()).severe("Error: Possible timeout or problems with file");
    Logger.getLogger(OtherFactionsStats.class.getName()).log(Level.Severe, "Error: Possible timeout or problems with file");