gpt4 book ai didi

java - 在大数据处理过程中有没有办法释放内存?

转载 作者:搜寻专家 更新时间:2023-10-31 20:21:18 25 4
gpt4 key购买 nike

我有一个存储发票的数据库。我必须使用所有发票中的信息,通过一系列算法对任何给定月份进行复杂的操作。检索和处理这些操作所需的数据会占用大量内存,因为可能有很多发票。当用户为这些计算请求的间隔达到几年时,问题会变得越来越严重。结果是我得到一个 PermGen 异常,因为垃圾收集器似乎没有在每个月的计算之间完成它的工作。

我一直认为使用 System.GC 来暗示 GC 完成它的工作并不是一个好的做法。所以我的问题是,除此之外还有其他释放内存的方法吗?您可以强制 JVM 使用 HD 交换来临时存储部分计算吗?

此外,我尝试在每个月末计算时使用 System.gc,结果是 CPU 使用率很高(由于调用了垃圾收集器)和内存使用率相当低。这可以完成这项工作,但我认为这不是一个合适的解决方案。

最佳答案

永远不要使用 System.gc()。它总是需要很长时间才能运行,并且经常什么都不做。

最好的办法是重写代码以尽可能减少内存使用。您尚未确切解释您的代码是如何工作的,但这里有两个想法:

  • 尝试重复使用您自己为每个月生成的数据结构。因此,假设您有一张发票 list ,请在下个月重复使用该 list 。
  • 如果您需要所有这些,请考虑在进行处理时将处理后的文件写入临时文件,然后在准备就绪时重新加载它们。

关于java - 在大数据处理过程中有没有办法释放内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16280974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com