[Gelöst] Speicherfreigabe unter 0.18 + neu STL /STEP import Pobleme
- roerich_64
- Veteran
- Posts: 1465
- Joined: Thu May 21, 2015 7:00 pm
- Location: Ostfriesland
[Gelöst] Speicherfreigabe unter 0.18 + neu STL /STEP import Pobleme
Moin,
Die letzten Tage bin ich dabei einen Rollcontainer mit Schubladen zu zeichnen und dazu die Fräsbahnen.
Was mit aufgefallen ist, das FreeCad Speicher nicht wieder freigibt...
Erst wenn ich FreeCAD komplett beende, wird der benutzte Speicher wieder freigegeben.
Hat jemand einen Rat?
Einen Befehl per Python-Console vielleicht?
VG
Walter
Edit:
OS: Windows 7
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.18.16093 (Git)
Build type: Release
Branch: releases/FreeCAD-0-18
Hash: 690774c0effe4fd7b8d2b5e2fb2b8c8d145e21ce
Python version: 3.6.6
Qt version: 5.6.2
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: German/Germany (de_DE)
Die letzten Tage bin ich dabei einen Rollcontainer mit Schubladen zu zeichnen und dazu die Fräsbahnen.
Was mit aufgefallen ist, das FreeCad Speicher nicht wieder freigibt...
Erst wenn ich FreeCAD komplett beende, wird der benutzte Speicher wieder freigegeben.
Hat jemand einen Rat?
Einen Befehl per Python-Console vielleicht?
VG
Walter
Edit:
OS: Windows 7
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.18.16093 (Git)
Build type: Release
Branch: releases/FreeCAD-0-18
Hash: 690774c0effe4fd7b8d2b5e2fb2b8c8d145e21ce
Python version: 3.6.6
Qt version: 5.6.2
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: German/Germany (de_DE)
Last edited by roerich_64 on Tue Apr 02, 2019 12:37 pm, edited 1 time in total.
Die Liebe wird siegen, denn sie ist unzerstörbar
Re: Speicherfreigabe unter 0.18
Hallo Walter,
du kannst mal versuchen die Müllabfuhr zu rufen. https://de.wikipedia.org/wiki/Garbage_Collection
Der Garbage Collector beinhaltet auch einige Helfer zum debuggen. https://docs.python.org/3.6/library/gc.html
Wenn du in einer reinen C++ WB arbeitest, könnte es ein verstecktes Speicherleck sein. Es gibt/gab im Bug-Tracker auch einen Eintrag, dass die Draft-Workbench bei jeden neuen Aufruf wieder Speicher reserviert. Hast du ein Beispiel?
Gruß
Benjamin
du kannst mal versuchen die Müllabfuhr zu rufen. https://de.wikipedia.org/wiki/Garbage_Collection
Code: Select all
import gc
gc.collect()
Wenn du in einer reinen C++ WB arbeitest, könnte es ein verstecktes Speicherleck sein. Es gibt/gab im Bug-Tracker auch einen Eintrag, dass die Draft-Workbench bei jeden neuen Aufruf wieder Speicher reserviert. Hast du ein Beispiel?
Gruß
Benjamin
- roerich_64
- Veteran
- Posts: 1465
- Joined: Thu May 21, 2015 7:00 pm
- Location: Ostfriesland
Re: Speicherfreigabe unter 0.18
Hallo Benjamin,
Beispiel hier: Hmm, hab gerade einen Job korrigiert und bin dann rüber zur Fräse und die Teile gefräst.
Hatte FreeCAD mit der Datei offen gelassen. Als ich nach etwa 30min wieder kam war der Speicher voll...
VG
Walter
Beispiel hier: Hmm, hab gerade einen Job korrigiert und bin dann rüber zur Fräse und die Teile gefräst.
Hatte FreeCAD mit der Datei offen gelassen. Als ich nach etwa 30min wieder kam war der Speicher voll...
VG
Walter
Die Liebe wird siegen, denn sie ist unzerstörbar
- roerich_64
- Veteran
- Posts: 1465
- Joined: Thu May 21, 2015 7:00 pm
- Location: Ostfriesland
Re: Speicherfreigabe unter 0.18
So, hab ein wenig rum gespielt in der Path-WB mit den Befehlen von Benjamin vorgeschlagen.
Zuerst ohne eine geladene Datei.
Dann die Datei geladen, bisschen mit den 'Sichtbarkeiten' gespielt
Und die Datei wieder geschlossen.
Was hat das zu bedeuten? :
Zuerst ohne eine geladene Datei.
Dann die Datei geladen, bisschen mit den 'Sichtbarkeiten' gespielt
Und die Datei wieder geschlossen.
Code: Select all
Python 3.6.6 | packaged by conda-forge | (default, Jul 26 2018, 11:48:23) [MSC v.1900 64 bit (AMD64)] on win32
Type 'help', 'copyright', 'credits' or 'license' for more information.
>>> import FreeCAD
>>> FreeCAD.open(u"C:/Users/XXXXXX/Documents/3_Zeichnungen/0_Global/01_Haus_A/01_EG/5_Werkstatt_klein/02_Einzelteile/04_Roll_Container/03_Assembies/V3/back.FCStd")
>>> App.setActiveDocument("back")
>>> App.ActiveDocument=App.getDocument("back")
>>> Gui.ActiveDocument=Gui.getDocument("back")
>>> Gui.getDocument("back").getObject("Pocket_Shape").Visibility=True
>>> App.closeDocument("back")
>>> App.setActiveDocument("")
>>> App.ActiveDocument=None
>>> Gui.ActiveDocument=None
>>> import gc
>>> gc.collect()
0
>>> gc.garbage
[]
>>> gc.DEBUG_COLLECTABLE
2
>>> gc.DEBUG_UNCOLLECTABLE
4
>>> gc.get_count()
(26, 0, 0)
>>> gc.get_threshold()
(700, 10, 10)
>>> gc.enable()
>>> gc.collect()
0
>>>
>>> gc.collect(generation=2)
0
>>> gc.get_stats()
[{'collections': 258, 'collected': 514, 'uncollectable': 0}, {'collections': 23, 'collected': 56, 'uncollectable': 0}, {'collections': 5, 'collected': 12, 'uncollectable': 0}]
>>> import FreeCAD
>>> FreeCAD.open(u"C:/Users/XXXXXX/Documents/3_Zeichnungen/0_Global/01_Haus_A/01_EG/5_Werkstatt_klein/02_Einzelteile/04_Roll_Container/03_Assembies/V3/back.FCStd")
>>> App.setActiveDocument("back")
>>> App.ActiveDocument=App.getDocument("back")
>>> Gui.ActiveDocument=Gui.getDocument("back")
>>> gc.get_stats()
[{'collections': 258, 'collected': 514, 'uncollectable': 0}, {'collections': 23, 'collected': 56, 'uncollectable': 0}, {'collections': 5, 'collected': 12, 'uncollectable': 0}]
>>> gc.DEBUG_STATS
1
>>> gc.set_threshold(1,1,1)
>>> gc.get_stats()
[{'collections': 368, 'collected': 514, 'uncollectable': 0}, {'collections': 78, 'collected': 56, 'uncollectable': 0}, {'collections': 5, 'collected': 12, 'uncollectable': 0}]
>>> Gui.getDocument("back").getObject("Cut003").Visibility=True
>>> Gui.SendMsgToActiveView("ViewFit")
>>> Gui.getDocument("back").getObject("Pocket_Shape").Visibility=True
>>> Gui.getDocument("back").getObject("Cut003").Visibility=False
>>> Gui.getDocument("back").getObject("Job").Visibility=True
>>> Gui.getDocument("back").getObject("Pocket_Shape").Visibility=False
>>> Gui.getDocument("back").getObject("Profile_Faces").Visibility=False
>>> Gui.getDocument("back").getObject("DogboneDressup001").Visibility=False
>>> Gui.getDocument("back").getObject("Contour").Visibility=False
>>> Gui.getDocument("back").getObject("Job").Visibility=False
>>> Gui.getDocument("back").getObject("Body").Visibility=True
>>> Gui.getDocument("back").getObject("Body001").Visibility=True
>>> Gui.getDocument("back").getObject("Body002").Visibility=True
>>> Gui.getDocument("back").getObject("Body003").Visibility=True
>>> Gui.getDocument("back").getObject("Pocket_Shape").Visibility=True
>>> Gui.getDocument("back").getObject("DogboneDressup").Visibility=True
>>> Gui.getDocument("back").getObject("Profile_Faces").Visibility=True
>>> Gui.getDocument("back").getObject("DogboneDressup001").Visibility=True
>>> Gui.getDocument("back").getObject("Contour").Visibility=True
>>> gc.get_stats()
[{'collections': 4502, 'collected': 514, 'uncollectable': 0}, {'collections': 2145, 'collected': 56, 'uncollectable': 0}, {'collections': 5, 'collected': 12, 'uncollectable': 0}]
>>> gc.get_stats()
[{'collections': 5030, 'collected': 514, 'uncollectable': 0}, {'collections': 2409, 'collected': 56, 'uncollectable': 0}, {'collections': 5, 'collected': 12, 'uncollectable': 0}]
>>> gc.get_stats()
[{'collections': 5256, 'collected': 514, 'uncollectable': 0}, {'collections': 2522, 'collected': 56, 'uncollectable': 0}, {'collections': 5, 'collected': 12, 'uncollectable': 0}]
>>> gc.get_stats()
[{'collections': 5515, 'collected': 514, 'uncollectable': 0}, {'collections': 2651, 'collected': 56, 'uncollectable': 0}, {'collections': 5, 'collected': 12, 'uncollectable': 0}]
>>> gc.get_stats()
[{'collections': 5866, 'collected': 514, 'uncollectable': 0}, {'collections': 2826, 'collected': 56, 'uncollectable': 0}, {'collections': 5, 'collected': 12, 'uncollectable': 0}]
>>> gc.get_stats()
[{'collections': 6163, 'collected': 514, 'uncollectable': 0}, {'collections': 2975, 'collected': 56, 'uncollectable': 0}, {'collections': 5, 'collected': 12, 'uncollectable': 0}]
>>> gc.get_objects()
Traceback (most recent call last):
File "<input>", line 1, in <module>
ReferenceError: Cannot print representation of deleted object
>>>
>>> gc.DEBUG_COLLECTABLE
2
>>> gc.DEBUG_UNCOLLECTABLE
4
>>> gc.get_stats()
[{'collections': 9176, 'collected': 514, 'uncollectable': 0}, {'collections': 4482, 'collected': 56, 'uncollectable': 0}, {'collections': 6, 'collected': 12, 'uncollectable': 0}]
>>> App.getDocument("back").save()
>>> App.closeDocument("back")
>>> App.setActiveDocument("")
>>> App.ActiveDocument=None
>>> Gui.ActiveDocument=None
>>> gc.get_stats()
[{'collections': 10102, 'collected': 514, 'uncollectable': 0}, {'collections': 4945, 'collected': 56, 'uncollectable': 0}, {'collections': 6, 'collected': 12, 'uncollectable': 0}]
>>>
>>> gc.get_stats()
[{'collections': 10158, 'collected': 514, 'uncollectable': 0}, {'collections': 4973, 'collected': 56, 'uncollectable': 0}, {'collections': 6, 'collected': 12, 'uncollectable': 0}]
>>>
>>> gc.get_stats()
[{'collections': 10316, 'collected': 514, 'uncollectable': 0}, {'collections': 5051, 'collected': 56, 'uncollectable': 0}, {'collections': 6, 'collected': 12, 'uncollectable': 0}]
>>> gc.get_objects()
Traceback (most recent call last):
File "<input>", line 1, in <module>
ReferenceError: Cannot print representation of deleted object
>>>
>>> gc.get_stats()
[{'collections': 12498, 'collected': 514, 'uncollectable': 0}, {'collections': 6143, 'collected': 56, 'uncollectable': 0}, {'collections': 6, 'collected': 12, 'uncollectable': 0}]
>>>
Code: Select all
>>> gc.get_objects()
Traceback (most recent call last):
File "<input>", line 1, in <module>
ReferenceError: Cannot print representation of deleted object
Die Liebe wird siegen, denn sie ist unzerstörbar
Re: Speicherfreigabe unter 0.18
Hallo!
Diesbezüglich gabe es schon mal diskussionen. Meistens stellte sich heraus, dass das der Speicher für die Rückgängigfunktion war. Stell diesen mal aus oder auf eins und schau mal ob der Speicher immernoch ständig steigt.
Grüße
user
Diesbezüglich gabe es schon mal diskussionen. Meistens stellte sich heraus, dass das der Speicher für die Rückgängigfunktion war. Stell diesen mal aus oder auf eins und schau mal ob der Speicher immernoch ständig steigt.
Grüße
user
- Attachments
-
- 01.png (117.18 KiB) Viewed 1462 times
- roerich_64
- Veteran
- Posts: 1465
- Joined: Thu May 21, 2015 7:00 pm
- Location: Ostfriesland
Re: Speicherfreigabe unter 0.18
@User1234:
Hatte ich auf 50...
Jetzt runter auf 20
Ich schau mal
Hatte ich auf 50...
Jetzt runter auf 20
Ich schau mal
Die Liebe wird siegen, denn sie ist unzerstörbar
Re: Speicherfreigabe unter 0.18
Meistens (>98% der Fälle) bringt dir der Aufruf des GC in python genau nichts, da insbesondere mit modernen Versionen die Referenzen korrekt getracked werden.
Python hat zudem eine Eigenheit allokierten Speicher nicht mehr herzugeben, nach dem Motto: "Wenn du das einmal gebraucht hast, brauchst du es sicher bald wieder". daher bringt es bei sowas nur was den Interpreter neu zu starten.
- roerich_64
- Veteran
- Posts: 1465
- Joined: Thu May 21, 2015 7:00 pm
- Location: Ostfriesland
Re: Speicherfreigabe unter 0.18 + neu STL /STEP import pobleme
Moin Freunde des fröhlichen Zeichnens
Mit Hilfe von Klaus @kbwbe haben wir hier https://forum.freecadweb.org/viewtopic. ... 60#p298461
und folgend herausgefunden das meine FC Installation wohl irgendwie krank ist
Nachdem ich diese Version
Das schlimmste aktuell ist, das der Import von STP Dateien und STEP Dateien alle vier Kerne der CPU bis zum Anschlag nutzen und unverhältnismäßig lange dauert.
Tja, da brauche ich eure Hilfe. Ich hänge hier einen DB9_Stecker als STEP an.
Bitte testet den kurz, indem ihr diesen in eine neue Datei importiert. Bin gespannt, was bei euch rauskommt.
Und bitte postet auch eure Versionsinformationen dazu.
Vielen Dank im vorraus
Walter
Mit Hilfe von Klaus @kbwbe haben wir hier https://forum.freecadweb.org/viewtopic. ... 60#p298461
und folgend herausgefunden das meine FC Installation wohl irgendwie krank ist
Nachdem ich diese Version
installiert habe, sind die Fehler angefangen.OS: Windows 7
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.18.16093 (Git)
Build type: Release
Branch: releases/FreeCAD-0-18
Hash: 690774c0effe4fd7b8d2b5e2fb2b8c8d145e21ce
Python version: 3.6.6
Qt version: 5.6.2
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: German/Germany (de_DE)
Das schlimmste aktuell ist, das der Import von STP Dateien und STEP Dateien alle vier Kerne der CPU bis zum Anschlag nutzen und unverhältnismäßig lange dauert.
Tja, da brauche ich eure Hilfe. Ich hänge hier einen DB9_Stecker als STEP an.
Bitte testet den kurz, indem ihr diesen in eine neue Datei importiert. Bin gespannt, was bei euch rauskommt.
Und bitte postet auch eure Versionsinformationen dazu.
Vielen Dank im vorraus
Walter
Die Liebe wird siegen, denn sie ist unzerstörbar
Re: Speicherfreigabe unter 0.18
Hast Du schon mal die Config-Dateien zurückgesetzt?
A Sketcher Lecture with in-depth information is available in English, auf Deutsch, en français, en español.
-
- Veteran
- Posts: 7788
- Joined: Tue Jan 07, 2014 11:10 am
- Contact:
Re: Speicherfreigabe unter 0.18 + neu STL /STEP import pobleme
Guten morgen Walter,
mit laufendem Freecad und importierer Step, 50% Speicherauslastung:
Code: Select all
OS: Ubuntu 18.04.2 LTS
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.18.16093 (Git)
Build type: Release
Branch: releases/FreeCAD-0-18
Hash: 690774c0effe4fd7b8d2b5e2fb2b8c8d145e21ce
Python version: 2.7.15rc1
Qt version: 5.9.5
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: German/Germany (de_DE)
Wilfried