首先,这不是一个离线"剖析任务!
我正在开发一些SCala
代码库,目前我要做的是,如果函数foo
消耗太多内存(让我们说超过10G),请将其删除函数并返回默认值。
所以看起来应该是这样的:
monitor{
foo() <--- if foo has used over 10G memory, just cut it off
}
catch {
case MemoryUsageError => default_value
}
请注意,目前foo
与我的main
功能在同一个流程中运行。
有可能这样做吗?我快速搜索这些材料,只找到一种方法来显示SCala
应用程序的当前内存使用情况;它并不像我想要的那样精细。
我清楚这个吗?谁能在这里点灯?非常感谢!
=============================================== =========================
请注意,我要找的是&#34; 在线&#34;方法!它不像离线分析。我的应用程序ifself应该确定foo
函数的内存使用量,如果它太高,就把它剪掉。
答案 0 :(得分:0)
通常,jvm不会跟踪在堆上分配的对象的创建者和创建位置。这非常昂贵,对GC无关紧要。
Future
的{{1}}函数,并在需要时或使用Thread
和ForkJoinTask
方法中断它。cancel()
!