Laden...

Größe von .NET Programmen

Erstellt von Stu42 vor 17 Jahren Letzter Beitrag vor 17 Jahren 3.383 Views
S
Stu42 Themenstarter:in
506 Beiträge seit 2006
vor 17 Jahren
Größe von .NET Programmen

Hallo,

als ausführbare Datei sind die .NET Pogramme ja nur seht klein. Aber ausgeführt sind die ja riesig... Mein Programm besteht aus aus nem MFC .ocx und nen paar dlls und ist mal eben so 26 mb im speicher. Mir ist auch aufgefallen, das wenn ich mir z.B. eine Kernel Funktion via DllImport einbinde, dann wächst das Programm beim einbinden der DLL um ca 6 MB.

Naja das ist ja auch irgentwie verständlich das .NET programm größer sind, wahrscheinlich werden da wohl alle .NET dlls eingebunden. Aber 26 MB ist schon derbe.

Selbst eine noch jungfreuliche anwendung ist mal eben so 11mb groß,

Weiß jemand warum die Programme sich im Speicher so ausdehnen?
Oder mache ich vieleicht irgentetwas falsch?

Gruß Stu

_
227 Beiträge seit 2006
vor 17 Jahren

und wo ist konkret das Problem wenn da xxMB gebraucht werden? Nur weil das dransteht heißt ja noch lange nicht, dass das fest verplant ist sondern eben von .Net mal reserviert wurde.

vgl. anderer OS' bzw Vista auch(?) da is der Ram immer voll um beispielsweise programmstarts zu beschleunigen, wieso auch nicht, was bringen z.b. 1 gb freier ram wenn man den sinnvoll einsetzen kann.

Was ich aber sagen will, solang es kein konkretes problem bzw eine outofmemory exception gibt ist das nicht unbedingt sinnvoll darüber nachzudenken.

Die Forensuche gibt btw auch einiges zu dem thema her

2.223 Beiträge seit 2005
vor 17 Jahren

moin

ich frage mich gerade was die Größe eines ausführbare Programms mit der Größe des Programms im Speicher zu tun hat

für jedes einzele Objekt muß Speicher reserviert werden

mfg

S
8.746 Beiträge seit 2005
vor 17 Jahren

Aktuelle Rechner werden mit einem Gigabyte Speicher ausgeliefert. 11 MB sind grad mal 1% davon. "Riesig" ist immer relativ....

3.971 Beiträge seit 2006
vor 17 Jahren

Den Speicher den du im Taskmanager bei .Net Anwendungen siehst, ist der Speicher der vom Pogramm bem System angefordert wurde, dass Programm nutzt aber nie den kompletten angefordert Speicher zu 100%. .NEt Programme reservieren ähnlich wie Windows (VISTA) Speicher im voraus, weil Speicheranforderungen recht langsam sind.

Bei DLLImporte ist es so, dass native Objekte und Werttypen in C-Datentypen gewandelt werden müssen. C kennt zum Beispiel keine Strings. Und das kostet halt Speicher.

Für den Reservierten Speicher gibt es DLLImport-Methode um den reservierten Speicher zu definieren, bzw. zu minimieren. Leider weiß ich den Namen der Funktion nicht. Und die Funktion ist auch mit vorsicht zu genießen. Besonders wenn du mit mehreren Threads arbeitest

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

S
8.746 Beiträge seit 2005
vor 17 Jahren

Frage: Spart ungenutzter Speicher Strom oder bringt anderweitige Vorteile? 😉

Stätestens Vista wird mit diesem "Speicher-Geiz" endgültig aufräumen. Das krallt sich alles was da ist....

Nur ungenutzter Speicher ist schlechter Speicher. Wie immer gilt nämlich: Weniger genutzer Speicher = Schlechtere Performance.

_
227 Beiträge seit 2006
vor 17 Jahren

Original von svenson
Frage: Spart ungenutzter Speicher Strom oder bringt anderweitige Vorteile? 😉

Durchaus, wenn auch indirekt. Mal ein Beispiel:
Ich habe 2GB Ram eingebaut, nutze kontinuierlich maximal 1gb somit könnte ich 1gb herausnehmen wodurch mein PC weniger Strom verbraucht 😁

3.971 Beiträge seit 2006
vor 17 Jahren

Jedes Bit eines Rams ist ein Transistor. Und Transistoren erzeugen genau wie alle andren Komponenten im PC wärme, wenn der Zustand des Bits (Transistor) von 0 auf 1 oder umgekehrt wechselt. Und diese Wärme sollte irgendwie abtransportiert werden. Entweder passiv oder aktiv. Bei aktiv brauchst du wieder mehr Strom (Lüfter).

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

S
8.746 Beiträge seit 2005
vor 17 Jahren

Dann messe schön mal die Stromaufnahme deines Rechners mit mehr oder weniger Speicherbelastung....

S
8.746 Beiträge seit 2005
vor 17 Jahren

Original von daniel

Original von svenson
Frage: Spart ungenutzter Speicher Strom oder bringt anderweitige Vorteile? 😉

Durchaus, wenn auch indirekt. Mal ein Beispiel:
Ich habe 2GB Ram eingebaut, nutze kontinuierlich maximal 1gb somit könnte ich 1gb herausnehmen wodurch mein PC weniger Strom verbraucht 😄

Du könntest auch den Rechner nach dem Speicherausbau gleich ausgeschaltet lassen. 😉

228 Beiträge seit 2006
vor 17 Jahren

also irgendwie passt das nicht mehr so ganz zum thema...
für mich ist das ganze thema ehh schwachsinn!
ich frag mich doch bei den heutigen speicherkapazitäten höchstens bei richtig aufwendigen programmen nach dem speicherverbrauch

Medieval Fantasy Online - ORPG Projekt
.NET - Try and Error - Blog - Gemeinschaftsblog
MEt45's Dev Garage - Eigener Blog

_
227 Beiträge seit 2006
vor 17 Jahren

Original von MEt45
also irgendwie passt das nicht mehr so ganz zum thema...
für mich ist das ganze thema ehh schwachsinn!
ich frag mich doch bei den heutigen speicherkapazitäten höchstens bei richtig aufwendigen programmen nach dem speicherverbrauch

Eher bei Anwendungen auf Geräten mit echten beschränkungen (momentan) PDAs beispielsweise

B
1.529 Beiträge seit 2006
vor 17 Jahren

Jedes Bit eines Rams ist ein Transistor. Und Transistoren erzeugen genau wie alle andren Komponenten im PC wärme, wenn der Zustand des Bits (Transistor) von 0 auf 1 oder umgekehrt wechselt. Und diese Wärme sollte irgendwie abtransportiert werden. Entweder passiv oder aktiv. Bei aktiv brauchst du wieder mehr Strom (Lüfter).

Nicht ganz korrekt. Jedes Bit des DRAM ist ein Kondensator, der durch einen Transistor gesteuert wird (im Gegensatz zum SRAM).
Richtig ist, dass zum Beschreiben und Auslesen des Speichers Elektorenen bewegt werden müssen und damit Energie verbraucht wird. Nur verliert der Kondensator im DRAM ständig Ladungen (=Wärme). Deshalb wird der Speicher alle paar Milisekunden ausgelesen und wieder neu beschrieben, damit er seinen Wert behält. Das passiert aber, egal ob die entsprechende Adresse vom OS genutzt wird oder nicht.
Damit macht nur die gespeicherte Ladung einen Unterschied aus. Diese ist wiederum von der Zahl der geladenen bzw. ungeladenen Kondensatoren (und damit von den gesetzten bzw. gelöschten Bits, also den Nullen und Einsen) anhängig.
Und diese läßt sich wohl kaum effektiv beeinflussen.

Die einzige Stelle, an der ein Stromverbrauch (und damit Wärmeproduktion) praktisch beeinflusst werden kann, ist somit der Refresh. Daher wird die Betriebsspannung auch immer weiter gesenkt.

S
8.746 Beiträge seit 2005
vor 17 Jahren

Original von daniel
Eher bei Anwendungen auf Geräten mit echten beschränkungen (momentan) PDAs beispielsweise

Und deswegen heissen die Frameworks dort auch "Compact" oder "Micro". Das Cf 2.0 hat - wenn alle Assemblies genutzt werden - einen Footprint von etwa 3 MB (bei 64% Funktionalität gegenüber .NET 2.0).

3.971 Beiträge seit 2006
vor 17 Jahren

@ Borg

achso... wieder was gelernt... Hab ich ein glück dass ich Programmierer geworden bin...

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...