Pgx OutOfMemoryError:最大堆外大小配置为不超过8,192 MB

时间:2018-06-28 07:44:01

标签: oracle java-8 pgx

我遇到PGX API of Oracle的问题。

我加载了一个大图,并应用了连续的过滤器,但是在进行了一些计算之后,我破坏了临时图。

GraphChangeSet<Integer> subGraphChangeSet = 
currentSubGraph.createChangeSet();
    list.forEach(v -> subGraphChangeSet.updateVertex((Integer) v.getId())
            .setProperty("BLOCKED", true));

PgxGraph subGraphForRequest = subGraphChangeSet.build();

// ...

PgxGraph subGraphFiltered = subGraphForRequest
                .filter(new VertexFilter("vertex.BLOCKED == true"));

float edges = (float) subGraphFiltered.getNumEdges();

PgqlResultSet results = subGraphFiltered.queryPgql("SELECT label(e), COUNT(*) " +
                "MATCH () -[e]-> () GROUP BY label(e) ");

for (PgxResult result: results)
    map.put(property, (float) result.getLong(2) / edges);

subGraphFiltered.destroy();
subGraphForRequest.destroy();

但是我尝试执行查询时遇到[ERROR] OutOfMemoryError: QUERY_PGQL failed maximum off-heap size is configured to not exceed 8,192 MBs.异常。

因此,我尝试使用VM OPTS -Xms512m -Xmx4g ,但PGX仍然忽略了这些参数。我什至尝试 -XX:-UseGCOverheadLimit ,但没有任何反应。我试图修改pgx.conf文件以更改max_off_heap_size参数的值,但也没有任何反应。

1 个答案:

答案 0 :(得分:2)

经过更多研究,我在文档中发现我们可以使用系统属性

  

系统属性

     

此外,可以通过编写-Dpgx。=参数来运行JVM PGX,通过Java系统属性来设置任何PGX引擎或运行时字段。注意:设置系统属性将覆盖任何其他配置。例如,无论其他配置如何设置,要将最大堆外容量设置为256GB,请使用

     

java -Dpgx.max_off_heap_size=256000 ...

PGX Doc

这对我有用。