如何清除java中使用的线程的内存?

如何清除java中使用的线程的内存?,java,multithreading,memory,garbage-collection,Java,Multithreading,Memory,Garbage Collection,我有一个java应用程序,它连接到数据库并编写一些报告。我想每天在特定的时间写这些报告。首先,我打算使用windows服务器上的任务调度器,但显然它在执行我的jar时遇到了问题。因此,我认为我可以使用java中的线程,并按照我所说的每天特定时间执行生成报告的代码部分。这意味着我必须让我的应用程序一直运行,这感觉不太对,但这是我目前唯一的选择 这里的问题是: 当我运行我的程序时,它会等到调用将创建我的报告的类的时候,问题是java最初消耗的内存是1100KB,例如,当它执行报告部分时,内存几乎达到

我有一个java应用程序,它连接到数据库并编写一些报告。我想每天在特定的时间写这些报告。首先,我打算使用windows服务器上的任务调度器,但显然它在执行我的jar时遇到了问题。因此,我认为我可以使用java中的线程,并按照我所说的每天特定时间执行生成报告的代码部分。这意味着我必须让我的应用程序一直运行,这感觉不太对,但这是我目前唯一的选择

这里的问题是:

当我运行我的程序时,它会等到调用将创建我的报告的类的时候,问题是java最初消耗的内存是1100KB,例如,当它执行报告部分时,内存几乎达到10000 KB(我认为这是合理的,因为我连接到数据库并编写文件等等),然后,当再次编写这些报告时,它将达到12000KB,下一次达到130000KB时,它不会更高,但我想知道是否有办法在执行报告部分后返回1100KB。 我读过关于调用垃圾收集的内容,但它不起作用,设置为null我的对象也不起作用。 你们知道为什么会这样吗


谢谢大家!

我强烈建议使用石英。这是一个库,它允许您计划将在特定时间执行的作业,而无需在单独的线程中等待(在线程中)。没有理由发明已经发明的东西。:)

如果你可以把它打包,让它每天从cron上运行,然后忘记它,也许你应该投入更多的时间来检查为什么windows任务调度器不能运行你的jar。也许您试图用
javaw
而不是
java
运行它,或者没有正确设置路径。Java通常不会将未使用的内存返回给操作系统,而是在需要时保留内存。