feat: automatische Heap-Überwachung integriert mit Reload bei Überschreitung
- monitorHeapAndReload() in /utils/common/monitorMemory.js ausgelagert - automatische Heap-Prüfung im 10s-Intervall in MapComponent integriert - reload bei Überschreitung von 8 GB Heap zur Stabilisierung bei Langzeitbetrieb - useEffect-Cleanup ergänzt mit clearInterval für sauberes Entfernen bei Unmount - Ziel: frühzeitige Entlastung vor möglichem Memory Overflow
This commit is contained in:
@@ -79,6 +79,7 @@ import useDynamicDeviceLayers from "@/hooks/useDynamicDeviceLayers.js";
|
|||||||
import useDataUpdater from "@/hooks/useDataUpdater";
|
import useDataUpdater from "@/hooks/useDataUpdater";
|
||||||
import { cleanupPolylinesForMemory } from "@/utils/polylines/cleanupPolylinesForMemory";
|
import { cleanupPolylinesForMemory } from "@/utils/polylines/cleanupPolylinesForMemory";
|
||||||
import { cleanupMarkers } from "@/utils/common/cleanupMarkers";
|
import { cleanupMarkers } from "@/utils/common/cleanupMarkers";
|
||||||
|
import { monitorHeapAndReload } from "@/utils/common/monitorMemory";
|
||||||
//-----------------------------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------------------------
|
||||||
const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => {
|
const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => {
|
||||||
//-------------------------------
|
//-------------------------------
|
||||||
@@ -304,7 +305,6 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => {
|
|||||||
// vorherige Marker & Polylinien vollständig bereinigen
|
// vorherige Marker & Polylinien vollständig bereinigen
|
||||||
|
|
||||||
markers.forEach(marker => {
|
markers.forEach(marker => {
|
||||||
console.log("Marker-Typ:", marker.options);
|
|
||||||
marker.remove();
|
marker.remove();
|
||||||
});
|
});
|
||||||
cleanupPolylinesForMemory(polylines, map);
|
cleanupPolylinesForMemory(polylines, map);
|
||||||
@@ -780,6 +780,13 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => {
|
|||||||
cleanupMarkers(markers, oms);
|
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 (
|
return (
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
// /config/appVersion
|
// /config/appVersion
|
||||||
export const APP_VERSION = "1.1.237";
|
export const APP_VERSION = "1.1.238";
|
||||||
|
|||||||
14
utils/common/monitorMemory.js
Normal file
14
utils/common/monitorMemory.js
Normal file
@@ -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);
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user