如何跟踪我的内存泄漏?

时间:2017-04-10 20:53:41

标签: java lambda memory-leaks

基本上,情况如下:

班级ObjectGenerator会生成大量对象X并将其放入ArrayList<X>

ObjectGenerator在主线程中实例化。

UI线程( javaFX )接收UI事件,并在该事件的lambda处理程序中要求ObjectGenerator的实例清除ArrayList<X>并生成/填充它再次。

在其他地方,在软件中,对象X以各种方式使用,特别是通过许多lambdas (使用流和过滤器,很多)包含类列表/地图的时间源。

问题是,ObjectGenerator每次ObjectGenerator生成对象时生成的对象数量只增加一倍(尽管每次都会清除列表/地图)。

发现之后,我尝试使用 VisualVM 跟踪内存泄漏,但我可以确认对象不是GC并保留在ObjectGenerator,但不是原因。

底线:这可能是由于使用lambdas (每次填充封闭类中某种类型的集合)保留引用,这可能是由于读数是在UI线程中完成,所以,以某种方式保持引用,或者我应该继续寻找更“经典”的明显错误

0 个答案:

没有答案