Kotlin 删除TornadFX中replaceWith()之后的组件

Kotlin 删除TornadFX中replaceWith()之后的组件,kotlin,memory-leaks,tornadofx,Kotlin,Memory Leaks,Tornadofx,我目前正在学习使用TornadoFx。我对麦加主义的替代品很困惑。查看堆时,不会从内存中释放上一个视图。我可以接受这一点,因为视图是单例的,但是如果我使用片段,我会得到一个巨大的内存泄漏 这里的view1和view2完全相同,我只是在2之间来回移动,它们在内存中叠加 classview1:Fragment(“View1”){ 覆盖val root=vbox{ 按钮(){ 操作{replaceWith()} } } } 我怎样才能防止这种情况?这些对象的参考存储在哪里?如何测量?超过3个小时?

我目前正在学习使用TornadoFx。我对麦加主义的替代品很困惑。查看堆时,不会从内存中释放上一个视图。我可以接受这一点,因为视图是单例的,但是如果我使用片段,我会得到一个巨大的内存泄漏

这里的view1和view2完全相同,我只是在2之间来回移动,它们在内存中叠加

classview1:Fragment(“View1”){
覆盖val root=vbox{
按钮(){
操作{replaceWith()}
}
}
} 

我怎样才能防止这种情况?这些对象的参考存储在哪里?

如何测量?超过3个小时?遗憾的是,我找不到“replaceWith”的实现,我只是使用Intellij的堆检查器,我已经让它运行了一分钟多。GC应该有时间做它的事情。i、 ibb.co/hZ6H5Qt/image.pngI查看了函数replaceWith(..)的代码,看起来视图的根(例如BorderPane)将被替换并从父组件(例如场景)中删除。但不是视图类。您是否尝试在“replaceWith()”之后调用“removeFromParent()”?很抱歉花了很多时间回答。我试过你的建议,但似乎没有解决问题。你如何衡量?超过3个小时?遗憾的是,我找不到“replaceWith”的实现,我只是使用Intellij的堆检查器,我已经让它运行了一分钟多。GC应该有时间做它的事情。i、 ibb.co/hZ6H5Qt/image.pngI查看了函数replaceWith(..)的代码,看起来视图的根(例如BorderPane)将被替换并从父组件(例如场景)中删除。但不是视图类。您是否尝试在“replaceWith()”之后调用“removeFromParent()”?很抱歉花了很多时间回答。我已经尝试了你的建议,但似乎没有解决问题。