今天看了下之前做的一个异步处理任务的服务,发现占用内存量比较大,达到2G,但我检查了代码,基本没有static对象.但这个服务有个特点,就是每次执行一个任务的时候,会从数据库中捞大量的数据做处理,因此我怀疑是因为有比较多的临时对象产生,但程序没有来的及释放.为了验证这个,我用了jinfo查看和临时设置启动参数,jmap查看内存占用情况和主动触发FGC,jstat查看gc情况,top查看整个程序占用的内存量. 用jmap查看,发现内存占用并没有那么高(free值很大),但capacity比较大.用