IntelliJ进行Dart FFI开发时如何单独重启运行程序的DartVM?
解决IntelliJ Dart FFI开发时原生库内存状态残留问题
你遇到的状态残留问题根源是热重载功能不会重建DartVM实例,已经加载到VM进程空间的原生库不会被重新加载,因此内部错误状态会一直保留。以下是仅重启当前程序DartVM的操作方法,无需重启整个IDE:
- 使用运行工具栏的
重新运行按钮(绿色双箭头循环图标):该操作会先终止当前运行的DartVM进程,销毁所有已加载的原生库内存空间,再启动全新的VM实例运行最新代码,原生库状态会完全重置。不要使用热重载(闪电图标)功能,热重载只会增量更新Dart代码逻辑,不会改动VM进程内已经加载的原生库状态,无法解决内存不一致问题。
- 若你在终端面板中手动运行Dart程序,可直接按下
Ctrl + C终止当前进程,再重新执行启动命令,新启动的进程会对应全新的DartVM实例。 - 针对FFI开发场景可修改运行配置减少误操作:打开顶部菜单栏
运行 > 编辑配置,找到对应Dart项目的配置项,取消勾选启用热重载选项,之后每次启动程序都会默认运行全新VM实例,不会触发热重载逻辑。
DartVM进程终止时会自动卸载所有通过DynamicLibrary.open加载的动态链接库,全新VM实例启动后会重新读取原生库文件加载,完全重置内部内存状态,可彻底解决残留问题。
内容的提问来源于stack exchange,提问作者Maarten Boekhold
相关产品推荐
相关产品推荐

