NetLogo能否执行内存转储(memory dump)?如何清理运行占用内存?
NetLogo内存转储与运行时内存清理操作说明
内存转储操作支持情况
NetLogo本身未在官方词典中提供专属的内存转储内置命令,你可以借助其运行底层环境实现操作:
- 桌面版NetLogo基于JVM(Java虚拟机)运行,可直接使用JDK自带的
jmap工具生成进程内存转储文件,无需NetLogo侧提供额外支持,命令格式为:
生成的jmap -dump:format=b,file=netlogo_mem_dump.hprof <NetLogo进程ID>.hprof格式转储文件可通过常规Java内存分析工具读取解析。
运行时内存清理操作支持情况
NetLogo原生提供多组命令可清理运行时占用的内存,按需选择即可:
- 全量清理:执行
clear-all(简写为ca)命令,会清除所有运行时生成的模型数据,包括海龟、斑块、连接、自定义全局变量、绘图数据、输出区内容等,对应占用的内存会被同步标记为可回收。 - 定向清理:如果不需要清空全部运行数据,可调用细分清理命令释放部分内存,常用的包括
clear-turtles(清除所有海龟)、clear-patches(清除所有斑块的自定义变量值)、clear-links(清除所有连接)、clear-globals(清除自定义全局变量值)等。 - 如果你使用桌面版UI操作,也可以直接点击界面顶部的清除按钮,实现和
clear-all命令一致的内存清理效果。 - 针对长期运行模型导致的内存占用过高问题,除主动调用清理命令外,还可以修改NetLogo安装目录下的
NetLogo.cfg配置文件,调整java-options项下的-Xmx参数,扩大JVM堆内存上限,避免内存溢出。
内容的提问来源于stack exchange,提问作者Rafaela
相关产品推荐
相关产品推荐

