帧收集器和内存不足错误(大内存分配)
Frame collector & Out of memory errors (large memory allocations)
任务:任务以固定时间间隔生成 (来源),每个任务都有剩余的处理时间,由均匀随机 [0 .. x] 给出。每个任务都由模块(delay)处理。每个模块都有固定的处理时间。模块从任务的剩余处理时间中减去它的处理时间。如果任务的剩余处理时间耗尽(小于 0),则该任务完成 reaches (sink)。否则进入下一个模块,重复相同的过程。有N个模块,它们一个接一个地链接在一起。如果任务的剩余处理时间在第 N 个模块处理后没有用完,则它会转到优先级最高的第一个模块并在那里处理,直到剩余处理时间用完。
问题:我已经创建了模型,我可以获得的最大 spawned/sinked 代理数量是 -Xmx8G 17 个和 -Xmx4G 15 个。然后 CPU/RAM 使用率上升到最大值,没有任何反应。
Task Manager + Simulation Image
我还检查了故障排除 “我收到“内存不足”错误消息。我该如何解决?” page.
Case
Result
Large number of agents, or agents with considerable memory footprints
My agents have 2 parameters that are unique to each agent. One is double (remaining_processing_time), another one is integer (queue_priority). Also all 17 spawned agents reached sink.
System Dynamics delay structures under small numeric time step settings
Not using that function anywhere, besides delay block.
Datasets auto-created for dynamic variables
This option is turned off
也许我遗漏了什么,但我真的无法用如此少量的代理进行分析。我留个模型here.
这个模型真是把我难住了。无法弄清楚内存的去向以及为什么当你 运行 模型在视觉上它停止但内存继续呈指数增长......直到我做了一个 Java 分析并发现你有 100s Main
记忆中...
]
您为来自源的每个代理创建一个 new Main()
- 因此每个代理都是一个新的 Main,如果您愿意的话,每个 Main 都是一个全新的“模拟”..
只需将其改回默认值或根据您的情况创建您自己的代理类型,因为您希望节省剩余时间和队列优先级
您还需要更改所有其他块中的代理类型
现在如果你运行。你的应用程序它使用了一小部分内存
任务:任务以固定时间间隔生成 (来源),每个任务都有剩余的处理时间,由均匀随机 [0 .. x] 给出。每个任务都由模块(delay)处理。每个模块都有固定的处理时间。模块从任务的剩余处理时间中减去它的处理时间。如果任务的剩余处理时间耗尽(小于 0),则该任务完成 reaches (sink)。否则进入下一个模块,重复相同的过程。有N个模块,它们一个接一个地链接在一起。如果任务的剩余处理时间在第 N 个模块处理后没有用完,则它会转到优先级最高的第一个模块并在那里处理,直到剩余处理时间用完。
问题:我已经创建了模型,我可以获得的最大 spawned/sinked 代理数量是 -Xmx8G 17 个和 -Xmx4G 15 个。然后 CPU/RAM 使用率上升到最大值,没有任何反应。
Task Manager + Simulation Image
我还检查了故障排除 “我收到“内存不足”错误消息。我该如何解决?” page.
Case | Result |
---|---|
Large number of agents, or agents with considerable memory footprints | My agents have 2 parameters that are unique to each agent. One is double (remaining_processing_time), another one is integer (queue_priority). Also all 17 spawned agents reached sink. |
System Dynamics delay structures under small numeric time step settings | Not using that function anywhere, besides delay block. |
Datasets auto-created for dynamic variables | This option is turned off |
也许我遗漏了什么,但我真的无法用如此少量的代理进行分析。我留个模型here.
这个模型真是把我难住了。无法弄清楚内存的去向以及为什么当你 运行 模型在视觉上它停止但内存继续呈指数增长......直到我做了一个 Java 分析并发现你有 100s Main
记忆中...
您为来自源的每个代理创建一个 new Main()
- 因此每个代理都是一个新的 Main,如果您愿意的话,每个 Main 都是一个全新的“模拟”..
只需将其改回默认值或根据您的情况创建您自己的代理类型,因为您希望节省剩余时间和队列优先级
您还需要更改所有其他块中的代理类型
现在如果你运行。你的应用程序它使用了一小部分内存