我有一个每 5 分钟调用一次的 @Scheduled 方法。
批处理进行了大量计算,大约需要 2-15 分钟才能完成(如果批处理已经在运行,则有一个标志阻止批处理运行)。
我使用很多Map
s 来缓存计算的结果。我可以这样恢复。一个主要的 Map 将包含累积结果,以及一些 Map/List into submethod for internal calculus。
该批次可能需要大约 3-6 Gigs 才能运行。要分析大量数据。
我认为当代码退出方法时,我在方法中使用的 Map/List 将有资格获得 GC,对吗?
我应该在我的方法中使用WeakHashMap
or还是在退出方法之前WeakReference
调用?Map.clear();
如果可能的话,我想减少内存使用量,不要在批处理结束时等待 GC 进行清理。
批处理完成后,内存将减少到 500megs-1G max。