我有一个存储发票的数据库.我必须使用所有发票中的信息,通过一系列算法为任何给定的月份进行复杂的操作.检索和处理这些操作所需的数据会占用大量内存,因为可能会有大量发票.当用户为这些计算请求的间隔达到几年时,问题变得越来越严重.结果是我得到了一个PermGen异常,因为看起来垃圾收集器在每个月的计算之间没有完成它的工作.
我总是使用System.GC提示GC做它的工作不是一个好习惯.所以我的问题是,除此之外还有其他方法可以释放记忆吗?您是否可以强制JVM使用HD交换以暂时存储部分计算?
此外,我尝试在每个月末计算时使用System.gc,结果是cpu使用率很高(由于调用了垃圾收集器)并且内存使用率相当低.这可以做到这一点,但我认为这不是一个合适的解决方案.