How to close a viewPart in RCP

   前几天在工作中遇到需要通过编码将一个RCP viewpart关闭的问题:
   在界面中手动点击“X”按钮,执行GC,则viewPart instance count变为0。
   通过编码形式时,用dispose()只能将其内容清空,却不能将其关闭;IWorkbenchPage.hideView(viewPart)可以“关闭”它,而通过JProfiler看到,这个viewPart的instance还是存在,只是它内部components都被dispose了(从eclipse的sourcecode可以看到,从JProfiler中手动清理内存时,发现这个viewPart中的components回收的很慢,可能与它里面的components多有关)。此时,在打开该viewPart时,该viewPart的instance count 变成 2,再关闭viewPart,run GC后viewPart instance count又变成1。不断进行打开、关闭、回收内存操作,viewPart instance count不断在2与1间变化,目前暂时无法确切解释为什么总有一个viewPart存在内存中!
   领导追求那种手动点击“X”按钮的效果,只好在hideView()后,加了一句:viewPart=null,这样回收内存后viewPart就没了。
   不管是手动点击“X”按钮还是hideView,viewPart的dispose()方法都会运行,要在关闭时做些处理,可以考虑把代码写到dispose()里。
  

你可能感兴趣的:(eclipse,工作)