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 { 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 (
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
// /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