java 应用长时间运行效率低

目前接手一个java做的定时读取日志,大量计算后会生成报表,日志文件数量在稳定在2000个,目前的问题就是软件运行第一天生成报表总耗时2:30小时,第二天总耗时3:20小时,第三天总耗时4:21小时,第四天总耗时5:08小时,第五天总耗时6:09小时,一直到几天后的22:33小时,然后时间大于一天后,新一天的报告就开始运行了,这样报告就一直不会生成了, 请教下应该从哪些方面去确定耗时的问题?现在头比较大,没有方向~
注:服务器配置比较低,内存4G 系统server 2014,数据库SQLserver 2014

今天看最近一段时间的日志发现一个现象 :
2017-02-18  Thread-5 
2017-02-19  Thread-7
2017-02-20  Thread-9
2017-02-21  Thread-11
2017-02-22  Thread-13
2017-02-23  Thread-17
2017-02-24  Thread-19
2017-02-25  Thread-21
2017-02-26  Thread-23
2017-02-27  Thread-25
2017-02-28  Thread-27
2017-03-01  Thread-29
2017-03-02  Thread-31
2017-03-03  Thread-33
2017-03-04  Thread-35

请教一下,会不会是每天启动新的任务,前一天的任务还驻留在内存中,没有被释放?

最后问题在于数据量大,千万级别的数据量导致操作数据库的时间开销太大!

比如数据库查询,文件读取,这些都是比较耗时的操作。可以在程序中加一些日志信息,然后看主要耗时的地方在什么。然后对应来分析提高

看下是否存在内存泄漏,如果速度持续降低很可能是内存泄漏造成的,看下系统资源管理器,内存使用量

使用profile测试,未运行时多少内存,启动后是多少内存,看看内存是否释放

如果从java代码的方面考虑,在读取文件的时候运用BufferedReader 来读取,或者自己开辟一块内存做来读取文件

可以查看下java 虚拟机运行状态

查看模拟器运行速度,看看是否内存泄露

你读取的是当天的日志文件?还是前一天的日志文件,先把逻辑搞清楚,之后才能找到原因吧,debug一下看看,进入读取时的状态信息

与内存有关系。。。。。。