java – 有没有办法在大数据处理过程中释放内存?
发布时间:2020-12-14 19:35:56 所属栏目:Java 来源:网络整理
导读:我有一个存储发票的数据库.我必须使用所有发票中的信息,通过一系列算法为任何给定的月份进行复杂的操作.检索和处理这些操作所需的数据会占用大量内存,因为可能会有大量发票.当用户为这些计算请求的间隔达到几年时,问题变得越来越严重.结果是我得到了一个Perm
我有一个存储发票的数据库.我必须使用所有发票中的信息,通过一系列算法为任何给定的月份进行复杂的操作.检索和处理这些操作所需的数据会占用大量内存,因为可能会有大量发票.当用户为这些计算请求的间隔达到几年时,问题变得越来越严重.结果是我得到了一个PermGen异常,因为看起来垃圾收集器在每个月的计算之间没有完成它的工作.
我总是使用System.GC提示GC做它的工作不是一个好习惯.所以我的问题是,除此之外还有其他方法可以释放记忆吗?您是否可以强制JVM使用HD交换以暂时存储部分计算? 此外,我尝试在每个月末计算时使用System.gc,结果是CPU使用率很高(由于调用了垃圾收集器)并且内存使用率相当低.这可以做到这一点,但我认为这不是一个合适的解决方案. 解决方法
不要使用System.gc().它总是需要很长时间才能运行并且通常不会做任何事情.
最好的办法是重写代码,尽可能减少内存使用量.您还没有准确解释代码的工作原理,但这里有两个想法: >尝试重用您自己为每个月生成的数据结构.因此,假设您有一张发票清单,请在下个月重复使用该清单.>如果您需要所有这些,请考虑在处理时将处理过的文件写入临时文件,然后在准备好后重新加载它们. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |