Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Inventor
  Inventor, Speicherverwaltung, .NET, usw.

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Inventor, Speicherverwaltung, .NET, usw. (3845 mal gelesen)
daywa1k3r
Ehrenmitglied V.I.P. h.c.
Softwareentwickler



Sehen Sie sich das Profil von daywa1k3r an!   Senden Sie eine Private Message an daywa1k3r  Schreiben Sie einen Gästebucheintrag für daywa1k3r

Beiträge: 3497
Registriert: 01.08.2002

Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570
Laptop: Alienware m17x
Win7, Inventor2012 64Bi

erstellt am: 20. Mai. 2007 14:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Leute,

Inventor und die Speicherbelegung war schon oft das Thema hier, jedoch bin ich mir nicht sicher, ob jemals die Ursache für das komische Speicherverhalten bei Inventor gefunden wurde, so schreibe ich mal meine Erfahrung, die ich heute gemacht habe, nieder.

Ich arbeite momentan an einer .NET Applikation, und während den Tests sind mir ganz komische Sachen bezüglich der Speicherbelegung aufgefallen. Die Applikation hatte schon beim Start 30MB belegt, und nach einigen Jobs ging der belegte Speicher jenseits der 100MB Grenze. Ich habe versucht meinen Code zu optimieren indem ich den benötigten Speicher manuell freigegeben habe, jedoch ohne Erfolg. Dass .NET durch GarbageCollection das selber macht ist mir klar, jedoch diese Werte des belegten Speicher, die ich bekommen habe, waren so willkürlich, dass ich nachforschen musste. Dabei bin ich auf einen interessanten Artikel gestoßen. Da wird erklärt, warum dieses Verhalten nach der Minimierung einer Anwendung auftritt, und auch welcher API Befehl (SetProcessWorkingSetSize) nötig ist, um den reservierten jedoch nicht gebrauchten Speicher frei zu geben.

.NET Framework reserviert den s.g. WorkingSet Speicher, der zur Verfügung steht, wird jedoch nicht benutzt. Dieser Speicher wird von Framework automatisch freigegeben, sobald ein anderer Prozess den Speicher braucht. Also lange Rede kurzer Sinn, der Wert der in dem TaskManager angezeigt wird, ist nicht der wirkliche Speicher den die Anwendung benutzt. So ist der Einsatz von FreeMem und anderen Tools um den Speicher freizugeben völlig unnötig, denn dieser Speicher ist nicht wirklich belegt und steht zur Verfügung, sobald er benötigt wird, so sollte man die Speicherverwaltung wirklich dem Betriebssystem überlassen.

Um dieses Phänomen zu testen, muss Inventor einfach minimiert werden. Die Werte die bei mir raus kommen:

Inventor nach dem Start: 200MB
Inventor minimiert: 4MB
Inventor wieder maximiert: 8MB

So ist der Wert von 200MB nicht wirklich relevant, und man sollte sich davon nicht blenden lassen.

Ich habe die API Funktion SetProcessWorkingSetSize in ein einfaches Makro implementiert. Wenn man die Funktion ResetWorkingSetSize aufruft,  wird der gleiche Effekt hervorgerufen (die 2 Deklarationen bitte am Modulanfang, oder gleich ein neues Modul hinzufügen und den Code reinkopieren):

Code:

Declare Function SetProcessWorkingSetSize Lib "kernel32.dll" (ByVal hProcess As Long, ByVal dwMinimumWorkingSetSize As Long, ByVal dwMaximumWorkingSetSize As Long) As Long
Declare Function GetCurrentProcess Lib "kernel32.dll" () As Long

Sub ResetWorkingSetSize()
    Call SetProcessWorkingSetSize(GetCurrentProcess, -1, -1)
End Sub


So, und nun mache ich mal beruhigt weiter 

Schönen Sonntag noch!


------------------
Grüße Igor

FX64 Software Solutions

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADastrophe
Mitglied



Sehen Sie sich das Profil von CADastrophe an!   Senden Sie eine Private Message an CADastrophe  Schreiben Sie einen Gästebucheintrag für CADastrophe

Beiträge: 273
Registriert: 07.05.2001

AIS 2010 - Vault 2010
CADfix 7 (CAD-Konverter)
Gain 9.3 (PDM für Inventor)
Core i5 750
4GB RAM, NVidia 7600GT
Windows 7 x64

erstellt am: 21. Mai. 2007 09:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für daywa1k3r 10 Unities + Antwort hilfreich

Interessant, ist mir so noch nicht aufgefallen.
Ich hab nur bemerkt, dass nach dem Schließen einer großen Baugruppe der Inventor trotzdem den Speicher belegt obwohl die Bgr. bereits geschlossen war.
Makro funktioniert unter AIS11. Besten Dank!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Leo Laimer
Moderator
CAD-Dienstleister




Sehen Sie sich das Profil von Leo Laimer an!   Senden Sie eine Private Message an Leo Laimer  Schreiben Sie einen Gästebucheintrag für Leo Laimer

Beiträge: 26104
Registriert: 24.11.2002

IV bis 2019

erstellt am: 21. Mai. 2007 09:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für daywa1k3r 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von daywa1k3r:
...der Wert der in dem TaskManager angezeigt wird, ist nicht der wirkliche Speicher den die Anwendung benutzt...

Hallo Igor,

Aus ganz anderen Gründen ("Verdacht" bei mir statt "Wissen" bei Dir) sage ich immer wieder: Der Taskmanager zeigt nur das was Microsoft will dass der User sieht und stellt nur einen ganz groben Anhaltspunkt für Auslastung und Resourcenverbrauch dar.
Man sieht ja auch z.B. nirgends den Speicher den sich Windows selber unter die Nägel reisst, oder was mit dem Pagefile los ist...

Dass FreeMem & Co. bestenfalls Sand in den Augen des Users (wenn nicht gar Sand im Getriebe von Windows) ist sollte doch längst klar sein, oder?

------------------
mfg - Leo

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

daywa1k3r
Ehrenmitglied V.I.P. h.c.
Softwareentwickler



Sehen Sie sich das Profil von daywa1k3r an!   Senden Sie eine Private Message an daywa1k3r  Schreiben Sie einen Gästebucheintrag für daywa1k3r

Beiträge: 3497
Registriert: 01.08.2002

Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570
Laptop: Alienware m17x
Win7, Inventor2012 64Bi

erstellt am: 21. Mai. 2007 09:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Und hier noch ein Dokument (danke an modeng) über die generelle Speicheraufteilung unter XP.

------------------
Grüße Igor

FX64 Software Solutions
Data Management Konferenz 2007 (26. - 27. Juni 2007)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz