我编写了一个应用程序,根据主机和设备之间的通信,它将绘制一个表视图并显示每个通信的数据(对于每个新通信,将创建一个单独的表视图)。但在这样做之后,我面临着堆空间内存的一些问题。在创建了数百个表后,我的应用程序挂起,然后崩溃,但在抛出堆空间内存问题之前没有。我试图增加我的堆空间内存,但它没有解决我的问题。关于这个问题的任何启示对我都有帮助。
答案 0 :(得分:2)
我遇到了与TableView相同的问题,并收集了如何在http://tomsondev.bestsolution.at/2013/09/19/memoryleaks-javafx-2-2-tableview-and-friends/
解决此问题答案 1 :(得分:0)
如果我是你,我不会为每个新连接创建一个新表,因为向场景图添加更多节点会影响应用程序的性能,并且会占用更多内存。
见此分析:
应用:AllTablesTest
1)启动2个节点(Hbox,Button)内存消耗:40MB
2)我刚刚向scenegraph添加了1070个空表,现在节点数:1071内存消耗:205MB
3)为了确保我再次使用1100个空表运行sampletest,Memory Consumed:209MB
应用程序:SingleTableTst
1)节点数3和行(数据计数) - 4000,消耗的内存:47MB
显然,单个表是赢家,即使每个表的表列略有不同,也尝试使用包含更多列的单个表。