【问题标题】:How to detect the heap size from within a Scala program?如何从 Scala 程序中检测堆大小?
【发布时间】:2021-01-25 23:55:44
【问题描述】:

我有一个包含大约 6000 个节点(谱系)的图表。该程序应确定两个给定节点(关系)之间的所有方式。根据起始节点和目标节点的位置,要搜索的路径数量可能非常大。 现在我想监控空闲堆,以便我可以根据仍然可用的大小调整搜索策略。 如何确定空闲堆的大小?

翻译为www.DeepL.com/Translator(免费版)

【问题讨论】:

  • 你解决了什么具体问题?为什么需要确定所有方法?你知道 Dijkstra(等等)的算法吗?
  • 我假设this thread 已经描述了您的所有选项。但是,我对整个方法完全持怀疑态度,因为似乎没有任何可靠的方法来确定垃圾收集可以释放多少内存,而无需实际执行垃圾收集过程,这是不在你的控制之下。我建议寻找更可靠的方法来估计您使用了多少资源。更好的是:重新设计您的算法以在大致恒定的空间中工作。
  • 我认为这个问题没有任何 Scala 特定的角度。这是一个 JVM 问题。

标签: scala heap-memory heap-size


【解决方案1】:

假设您将这篇文章包含在 [scala] 标记中并且您提到这是一个 Scala 应用程序,那么您正在 JVM 中运行。如果您只需要简单的监控,则在运行 JVM 时只需要 JVisualVM 或 Visual Flight Recorder。我个人使用 JVisualVM。效果很好。我相信飞行记录器会随着时间的推移记录它的堆使用情况,这样您就可以进行审查,并可能在性能测试中将其连接起来。

下面是飞行记录仪的图片。

下面是 JVisualVM 的图像。

【讨论】:

  • @Mikhail Ionkin :不幸的是我不知道提到的算法。我认为它解决了我的问题。
猜你喜欢
  • 2011-06-16
  • 2011-09-29
  • 2013-01-19
  • 2011-11-25
  • 2015-08-17
  • 2011-01-16
  • 2020-04-24
  • 2020-04-27
  • 2010-12-13
相关资源
最近更新 更多