java - GetFeatures Geotools后释放内存

标签 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(); 也没有释放所有内存。

最佳答案

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

从代码的工作方式来看,只要您的代码持有对“getResult”返回的对象的引用,就会存在对访问者(及其数据结构)的引用。

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

关于java - GetFeatures Geotools后释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42487095/

相关文章:

java - 如何使用 Spring(和 Quartz)动态启动预定作业?

java - 将缩放图像级别保存到文件

java - 为什么 geotools 在作为 Java EE 6 应用程序的一部分运行时抛出 MathTransformFactory?

Hadoop 和地理服务器

java - GeoTools:如何从 GeodeticDatum 实例获取 Bursa-Wolf 参数

java - Java 包装类真的是不可变的吗?

java - 从databricks连接到数据库时获取java.lang.ClassNotFoundException : com. mysql.jdbc.Driver

java - GOOGLE MAPS API - 如何在没有 map.setMyLocationEnabled(boolean) 的情况下获取我的位置?

java - 带有 Glassfish 的 Geotools : Failed to connect to the EPSG database

java - 我如何确定何时可以重用对象?