Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1356to1360
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Memory Leak

Memory Leak
15.04.2014 14:54:24
Born
Hallo Forum,
ich habe folgendes Problem:
Ich habe meinen VBA-Code in eine XLL ausgelagert. Diese startet während des Makros eine Word-Datei, führt etliche Prüfungen in Word durch und kopiert anschließend bestimmte Inhalte von Word nach Excel, wo sie weiterverarbeitet werden. Befinde ich mich im LAN, ist das Makro nach ca. 5 Minuten fertig und Excel ist ca. 60 MB groß. Arbeite ich lokal, braucht das Makro ca. 20 Minuten und Excel belegt im RAM ca. 800 MB.
Ist es möglich, für die XLL einen Profiler zu nutzen? Wenn ja, welchen? Bei Google habe ich nur welche für EXE-Files gefunden. Und eine EXE, die die XLL einbindet, kann ich nicht erstellen, da der Compiler dabei abstürzt.
Bin für jeden Tipp dankbar.
M. Born

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Memory Leak
15.04.2014 16:27:58
EtoPHG
Hallo Born,
a) Warum heisst dein Betreff "Memory Leak" ? Wo leckt was ?
b) Was heisst "sich im LAN befinden" ? Läuft dein EXCEL im LAN z.B. unter Citrix, oder liegen die Dateien auf Servern, statt lokal auf deinem Computer ?
c) Was verstehst du unter einem Profiler für XLL ? Ich nehm doch mal an, dass dein Code immer die gleichen Befehle durchläuft.
d) Was heisst EXE, welche die XLL einbindet ? Was für eine EXE ?
Ich weiss, mehr Fragen, keine Antworten, aber das Problem dürfte remote schwer zu lösen sein.
Gruess Hansueli

AW: Memory Leak
15.04.2014 16:42:16
Born
Hallo Hansueli,
danke für die schnelle Antwort.
zu a) Ich habe jede Variable am Ende der Prozeduren auf Nothing gesetzt, aber trotzdem bläht sich Excel so stark auf. Zu Makro-Beginn belegt es nur ca. 30 MB im RAM. Wenn es sich auf über 800 MB aufbläht, werden scheinbar die Variablen nicht sauber zurückgesetzt. Ob das an Excel oder der XLL liegt, möchte ich gern herausfinden.
zu b) Excel läuft mei mir lokal auf dem PC. "Im LAN sein" heisst, dass ich mich in der Firma in der Domäne angemeldet habe. "Offline" bedeutet, dass ich mich ohne Netzverbindung am PC anmelde, also keine Netzlaufwerke nutzen kann. Alle Dateien (Excel, die XLL und die Word-Datei befinden sich lokal auf C).
zu c) Der Code durchläuft immer dieselben Schritte, unabhängig davon, ob ich lokal oder in der Firma arbeite. Ich suche nach einem Profiler, der mir Auskunft zum RAM-Verbrauch für die XLL geben kann.
zu d) In der Regel können Profiler nur eine Exe überwachen. Daher hatte ich die Idee, eine Exe zu erstellen, die die XLL einbindet und die Startprozedur aufruft. Beim Compilieren dieser Exe schmiert mir der Compiler regelmäßig ab. Im Netz habe ich dann gelesen, dass man eine XLL nicht in einer Exe einbinden kann. Daher scheint dieser Weg leider nicht zu funktionieren und ich suche daher einen Profiler, der die XLL direk überwachen kann.
Ich bin für heute erstmal off und kann weitere Posts erst morgen beantworten.
Vielen Dank,
M. Born

Anzeige
AW: Memory Leak
16.04.2014 12:10:12
EtoPHG
Hallo Born,
Dass dein XL sich bei LAN-Anschluss anders verhält, wie im lokalen Modus, kann ich logisch überhaupt nicht nachvollziehen. M.E. kann das nicht zusammenhängen, da ja alles lokal gespeichert ist und verarbeitet wird. Also müsste ich auch deine Aussage c) in Frage stellen. Zeit und Grösse liegen ja in einer Relation zueinander. Was passiert, wenn du die Mappe mit Speichern unter in eine neue Datei ablegst? Schrumpft sie dann wieder? Fast 1GB Grösse für eine XL-Datei ist doch etwas gross ;-)
Bezgl. eines Profilers kann ich dir leider nicht weiterhelfen und lasse die Anfrage darum offen.
Gruess Hansueli

Anzeige
AW: Memory Leak
17.04.2014 07:58:09
Born
Guten Morgen,
ich vermute, dass Excel ggf. irgendwann Abfragen Richtung LAN schickt, obwohl keine der betroffenen Dateien im LAN liegt, sondern alles lokal. Ich sehe auch im Code keinen Befehl, der irgendwas auf einem Netzlaufwerk machen würde.
Ich meine nicht die Dateigröße, sondern den RAM-Verbrauch im Task-Manager von Excel. Wenn ich am Ende die Datei speichere ist sie genauso groß wie bei der Arbeit im LAN. Ich habe auch manuell den Garbage Collector an einigen Stellen im Code aufgerufen, aber es bringt keine Verbesserung.
Hat noch jemand eine Idee?
M. Born

Anzeige
AW: Memory Leak
19.04.2014 08:43:51
fcs
Hallo M.Born,
die Quelle für ggf. vergebliche LAN-Zugriffe kann auch die Worddatei sein, wenn die Dokumentvorlage der Worddatei lokal nicht gefunden wird.
Warum dies dann aber den Speicherbedarf der Excelanwendung so extrem vergrößert ist mir schleierhaft.
Das kann doch dann eigentlich nur an einer sehr großen Anzahl an Zugriffen von Excel auf die Worddatei liegen, wobei dann jedes mal irgendein Rest im Excel-Anwendungsspeicher verbleibt.
Warum willst du denn unbedingt den Zugriff auf die Word-Datei via XLL-Addin realisieren?
Wäre ein "normales" xlam-AddInn nicht leichter zu realisieren?
Gruß
Franz

Anzeige
AW: Memory Leak
22.04.2014 09:50:28
Born
Hallo Franz,
den Tipp mit der Vorlage in Word werde ich mal nachgehen. Wahrscheinlich ist der Fehler dort zu suchen.
Ein normales Addin wäre sicher leichter, aber in dem Tool steckt das Know-how von etlichen Mann-Monaten und soll daher besonders geschützt werden.
Viele Grüße,
M. Born

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige