2012-09-19 238 views
2

我們正在研究JavaFX 2.2作爲構建桌面應用程序的框架。但是,在開發許多開發人員之前,我們希望確保JavaFX適合這項工作,因此我們進行了一次小型壓力測試,以確定它是否會泄漏資源。該測試在永無止境的循環中顯示並隱藏包含標籤和按鈕的舞臺。我們希望可以永遠這樣繼續下去沒有問題,但經過大約15500次迭代,我們得到這個異常JavaFX壓力測試失敗

java.lang.RuntimeException: could not create platform window 
at com.sun.glass.ui.Window.<init>(Window.java:180) 
at com.sun.glass.ui.win.WinWindow.<init>(WinWindow.java:20) 
at com.sun.glass.ui.win.WinApplication.createWindow(WinApplication.java:97) 
at com.sun.javafx.tk.quantum.WindowStage.initPlatformWindow(WindowStage.java:131) 
at com.sun.javafx.tk.quantum.WindowStage.init(WindowStage.java:82) 
at com.sun.javafx.tk.quantum.QuantumToolkit.createTKStage(QuantumToolkit.java:501) 
at javafx.stage.Stage.impl_visibleChanging(Stage.java:928) 
at javafx.stage.Window$10.invalidated(Window.java:689) 
at javafx.beans.property.BooleanPropertyBase.markInvalid(BooleanPropertyBase.java:127) 
at javafx.beans.property.BooleanPropertyBase.set(BooleanPropertyBase.java:161) 
at javafx.stage.Window.setShowing(Window.java:782) 
at javafx.stage.Window.show(Window.java:797) 
at javafx.stage.Stage.show(Stage.java:229) 
at leaktest.FXMLController.showHideDialog(FXMLController.java:58) 

我們最好的猜測是顯示()/隱藏()在舞臺上泄漏了一些資源,dheapmon揭示了桌面堆內存在測試過程中實際上已經泄漏,但我們沒有達到極限(我們的測試機器上有20 MB)。 GDI句柄和USER句柄限制也不是問題,因爲這些句柄沒有泄漏(根據Process Explorer)。對導致異常的原因有何建議?

+1

你能分享一下實際的代碼嗎? – metasim

回答