如何从Scala程序中检测堆大小?

如何从Scala程序中检测堆大小?,scala,heap,heap-size,Scala,Heap,Heap Size,我有一个大约6000个节点的图(谱系)。程序应确定两个给定节点之间的所有方式(关系)。根据起始节点和目标节点的位置,要搜索的路径数量可能非常大。 现在我想监控空闲堆,以便根据可用的大小调整搜索策略。 如何确定空闲堆的大小 翻译为(免费版本)假设您在[scala]标记中包含了这篇文章,并且您提到这是一个scala应用程序,那么您正在JVM中运行。如果您只需要简单的监视,那么在运行JVM时只需要JVisualVM或可视飞行记录器。我个人使用JVisualVM。效果很好。我相信飞行记录器会记录它的堆使

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


翻译为(免费版本)

假设您在[scala]标记中包含了这篇文章,并且您提到这是一个scala应用程序,那么您正在JVM中运行。如果您只需要简单的监视,那么在运行JVM时只需要JVisualVM或可视飞行记录器。我个人使用JVisualVM。效果很好。我相信飞行记录器会记录它的堆使用时间,这样你可以做一个回顾,也许在性能测试中连接起来

下面是飞行记录器的图像

下面是JVisualVM的图像


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