只是我在编写这种应用程序时必须记住的所有事情的大脑转储。
避免内存泄漏
我有一个应用程序,每天中午运行一次,其中我有一个FileWriter
. 我没有正确关闭它,然后我们开始想知道为什么我们的虚拟机在几周后会崩溃。内存泄漏实际上可以以任何形式出现,最常见的例子之一是您没有de-reference
适当地使用对象。例如,使用类的字段作为临时存储的方法。通常类会持续存在,引用也会持续存在。这让你有对象,坐在记忆中,什么都不做。
使用正确的调度程序
我在该应用程序中使用了 java Timer
,后来我了解到,当另一个应用程序更改系统时钟时,最好使用ScheduledThreadPoolExecutor 。因此,如果您打算让它完全基于 Java,我强烈建议您在 Timer 上使用它,因为这个问题中详述的所有原因。
请注意内存使用情况和您的环境
如果您的应用程序每天都在加载大量数据,并且您有其他应用程序在同一台服务器上运行,那么您可能需要注意时间安排。例如,假设在中午,三个应用程序运行它们预定的操作,我会说在任何其他时间运行它可能是一个聪明的举动。请注意执行代码的环境。
错误处理
您可能想要配置您的应用程序,让您知道是否出现问题,而不会导致应用程序崩溃。如果它每隔几个小时在某个时间运行,这意味着人们可能依赖它,所以我会在你的 Java 代码中添加一个函数,它会向你发送一封电子邮件,详细说明异常的性质。
使其可配置
同样,如果它需要在一天中的不同时间点运行,您不希望将它拉下来几个小时来对您的代码进行一些小的更改。相反,将其移植到 java 属性文件中,或者移植到 XML 配置中(或者实际上,等等)。这样做的好处是您可以在任何人真正注意到差异之前更新您的程序并启动并运行它。
害怕static
关键字
那个坏男孩会让对象持续存在,即使你破坏了它们的父引用。如果您不小心,它就是所有内存泄漏的根源。常量很好,你知道不需要改变并且需要存在于项目中才能运行良好的东西,但如果你在项目中将它用于随机值,你很快就会想知道为什么你的应用程序每隔几个小时就会崩溃一次,而不是syncing
.
@X86 的道具让我想起了那个。