diff --git a/components/mainComponent/MapComponent.js b/components/mainComponent/MapComponent.js index 3b518cf36..9b786e53b 100644 --- a/components/mainComponent/MapComponent.js +++ b/components/mainComponent/MapComponent.js @@ -79,6 +79,7 @@ import useDynamicDeviceLayers from "@/hooks/useDynamicDeviceLayers.js"; import useDataUpdater from "@/hooks/useDataUpdater"; import { cleanupPolylinesForMemory } from "@/utils/polylines/cleanupPolylinesForMemory"; import { cleanupMarkers } from "@/utils/common/cleanupMarkers"; +import { monitorHeapAndReload } from "@/utils/common/monitorMemory"; //----------------------------------------------------------------------------------------------------- const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => { //------------------------------- @@ -304,7 +305,6 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => { // vorherige Marker & Polylinien vollständig bereinigen markers.forEach(marker => { - console.log("Marker-Typ:", marker.options); marker.remove(); }); cleanupPolylinesForMemory(polylines, map); @@ -780,6 +780,13 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => { cleanupMarkers(markers, oms); }; }, []); + //-------------------------------------------- + // Überwacht den Speicherverbrauch und lädt die Seite neu, wenn er zu hoch ist, 8GB ist das Limit dann lädt die Seite neu + useEffect(() => { + const interval = monitorHeapAndReload(8, 10000); + + return () => clearInterval(interval); // wichtig: aufräumen! + }, []); //--------------------------------------------- //-------------------------------------------- return ( diff --git a/config/appVersion.js b/config/appVersion.js index 4af39151f..4489961ff 100644 --- a/config/appVersion.js +++ b/config/appVersion.js @@ -1,2 +1,2 @@ // /config/appVersion -export const APP_VERSION = "1.1.237"; +export const APP_VERSION = "1.1.238"; diff --git a/utils/common/monitorMemory.js b/utils/common/monitorMemory.js new file mode 100644 index 000000000..4354fdf5c --- /dev/null +++ b/utils/common/monitorMemory.js @@ -0,0 +1,14 @@ +export const monitorHeapAndReload = (limitInGB = 8, intervalMs = 10000) => { + const limit = limitInGB * 1024 * 1024 * 1024; + + return setInterval(() => { + const heap = performance.memory?.usedJSHeapSize || 0; + + console.log("Heap:", (heap / 1024 / 1024).toFixed(2), "MB"); + + if (heap > limit) { + console.warn("🚨 Heap-Limit erreicht. Reload wird ausgeführt."); + location.reload(); + } + }, intervalMs); +};