[Gelöst] Speicherfreigabe unter 0.18 + neu STL /STEP import Pobleme

In diesem Forum Fragen und Diskussionen in Deutsch
Forum rules
Foren-Regeln und hilfreiche Informationen

WICHTIG: Bitte zuerst lesen, bevor Sie posten
User avatar
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

Post by roerich_64 »

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...
SpeicherFreigabe.jpg
SpeicherFreigabe.jpg (547.82 KiB) Viewed 1529 times

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 :) ;)
User avatar
Gift
Posts: 769
Joined: Tue Aug 18, 2015 10:08 am
Location: Germany, Sauerland

Re: Speicherfreigabe unter 0.18

Post by Gift »

Hallo Walter,

du kannst mal versuchen die Müllabfuhr zu rufen. https://de.wikipedia.org/wiki/Garbage_Collection

Code: Select all

import gc
gc.collect()
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
User avatar
roerich_64
Veteran
Posts: 1465
Joined: Thu May 21, 2015 7:00 pm
Location: Ostfriesland

Re: Speicherfreigabe unter 0.18

Post by roerich_64 »

Hallo Benjamin,

Beispiel hier:
back.FCStd
(396.69 KiB) Downloaded 38 times
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... :roll:

VG
Walter
Die Liebe wird siegen, denn sie ist unzerstörbar :) ;)
User avatar
roerich_64
Veteran
Posts: 1465
Joined: Thu May 21, 2015 7:00 pm
Location: Ostfriesland

Re: Speicherfreigabe unter 0.18

Post by roerich_64 »

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.

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}]
>>> 

Was hat das zu bedeuten? :

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 :) ;)
user1234
Veteran
Posts: 3345
Joined: Mon Jul 11, 2016 5:08 pm

Re: Speicherfreigabe unter 0.18

Post by user1234 »

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
Attachments
01.png
01.png (117.18 KiB) Viewed 1462 times
User avatar
roerich_64
Veteran
Posts: 1465
Joined: Thu May 21, 2015 7:00 pm
Location: Ostfriesland

Re: Speicherfreigabe unter 0.18

Post by roerich_64 »

@User1234:

Hatte ich auf 50...
Jetzt runter auf 20

Ich schau mal ;)
Die Liebe wird siegen, denn sie ist unzerstörbar :) ;)
reox
Posts: 929
Joined: Sat Aug 13, 2016 10:06 am
Contact:

Re: Speicherfreigabe unter 0.18

Post by reox »

Gift wrote: Mon Mar 25, 2019 7:10 pm

Code: Select all

import gc
gc.collect()
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.
User avatar
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

Post by roerich_64 »

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 :roll: 8-)

Nachdem ich diese Version
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)
installiert habe, sind die Fehler angefangen.
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.
COM DB-9 male.STEP
(516.59 KiB) Downloaded 45 times
Vielen Dank im vorraus
Walter
Die Liebe wird siegen, denn sie ist unzerstörbar :) ;)
chrisb
Veteran
Posts: 53930
Joined: Tue Mar 17, 2015 9:14 am

Re: Speicherfreigabe unter 0.18

Post by chrisb »

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.
freecad-heini-1
Veteran
Posts: 7788
Joined: Tue Jan 07, 2014 11:10 am
Contact:

Re: Speicherfreigabe unter 0.18 + neu STL /STEP import pobleme

Post by freecad-heini-1 »

roerich_64 wrote: Tue Apr 02, 2019 2:15 am Ping
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)
sytstemauslastung_com_db_9_male.png
sytstemauslastung_com_db_9_male.png (64.95 KiB) Viewed 1301 times
Freecad beendet, Rechner neu gestartet:
sytstemauslastung_com_db_9_male_v2.png
sytstemauslastung_com_db_9_male_v2.png (70.08 KiB) Viewed 1295 times
Viele Grüße
Wilfried
Post Reply