GetFeatures Geotools之后释放内存

时间:2017-02-27 12:04:47

标签: java geotools

我们使用以下代码创建了GroupByVisitor: -

GroupByVisitor visitor = new GroupByVisitorBuilder().withAggregateAttribute(CQL.toExpression(strColumn))
                .withAggregateVisitor("Count").withGroupByAttribute(CQL.toExpression(strColumn)).build();

此时使用的内存为150-180Mb。 并在应用以下代码后: -

sfc.getFeatures().accepts(visitor, null);
visitor.getResult()

此点后内存超过1800Mb。但在此之后不会释放。 在得到所有值后如何释放内存?

System.gc();没有释放所有内存。

1 个答案:

答案 0 :(得分:2)

通过快速阅读GroupByVisitor,结果类GroupByResult可能拥有对GroupByVisitor成员的引用。

从代码的工作方式来看,只要您的代码包含对' getResult'返回的对象的引用,就会引用Visitor(及其数据结构)。

如果您能够从返回的对象中复制数据,然后在结果和访问者都有引用的上下文之外传递,JVM可能会收集内存。