From a26494b0281945564b03c9f0668b59bee62241c8 Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Sat, 4 Apr 2026 09:48:05 +0100 Subject: [PATCH] Fix memory pressure --- r5-java/run.sh | 6 +++--- r5-java/src/main/java/propertymap/Router.java | 11 ++++++++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/r5-java/run.sh b/r5-java/run.sh index be44d81..10adce7 100755 --- a/r5-java/run.sh +++ b/r5-java/run.sh @@ -22,8 +22,8 @@ set -euo pipefail # --demo only compute Bank + TCR, transit only (quick test) # --- Defaults --- -THREADS=12 -HEAP=24g +THREADS=8 +HEAP=40g NETWORK_DIR=property-data/r5-network OUTPUT_BASE=property-data/travel-times R5_DIR=r5-java @@ -131,7 +131,7 @@ fi echo "" echo "--- Starting batch computation ---" DATA_DIR="$NETWORK_DATA_DIR" NETWORK_CACHE_DIR="$NETWORK_DIR" \ -java -Xmx"$HEAP" -cp "$OUT_DIR:$LIB_DIR/*" propertymap.App \ +java -Xms"$HEAP" -Xmx"$HEAP" -cp "$OUT_DIR:$LIB_DIR/*" propertymap.App \ --postcodes property-data/arcgis_data.parquet \ --places property-data/places.parquet \ --output-dir "$OUTPUT_BASE" \ diff --git a/r5-java/src/main/java/propertymap/Router.java b/r5-java/src/main/java/propertymap/Router.java index e332114..20b9fc6 100644 --- a/r5-java/src/main/java/propertymap/Router.java +++ b/r5-java/src/main/java/propertymap/Router.java @@ -34,8 +34,11 @@ public class Router { private static final int DEPARTURE_TO_TIME = 8 * 3600 + 30 * 60; // 08:30 private static final int MAX_TRIP_DURATION_MINUTES = 90; - /** R5 PathResult throws if destinations > 5000. Chunks must be smaller when recording paths. */ - private static final int PATH_MAX_DESTINATIONS = 5000; + /** + * R5 PathResult throws if destinations > 5000. Chunks must be smaller when recording paths. + * Kept well below R5's limit to reduce per-chunk memory (fewer destinations = smaller PathResult). + */ + private static final int PATH_MAX_DESTINATIONS = 2000; // Percentile indices in R5 result arrays (order must match task.percentiles in buildTask) private static final int PERCENTILE_BEST = 0; // 5th percentile (transit only) @@ -383,7 +386,9 @@ public class Router { if (recordPaths) { task.includePathResults = true; - task.nPathsPerTarget = 3; + // We only use the most common RouteSequence (see extractPaths), so 1 path + // per target is sufficient and cuts path memory by ~67% vs 3. + task.nPathsPerTarget = 1; } configureMode(task, mode);