PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C# .Net: Wie Speicherverbrauch minimieren?


][immy
2007-08-12, 19:40:07
Nun, ich entwickel schon seit einiger zeit mit .Net. bisher hat mich der Speicherverbrauch nicht wirklich gestört weil das meiste businessapplikationen waren, wo es darauf nicht ankam.

nun frage ich mich aber wie man den speicherverbrauch reduzieren kann. Ich habe z.B. ein kleines tool geschrieben mit dem man die daten eines Sharepoint 2007 servers in einem treeview durchforsten kann, und frage dabei immer nur die Daten ab die ich gerade benötige.
Dummerweise schießt der speicherverbrauch so ziemlich direkt in die höhe 80MB und steigend.

Das gleiche problem hatte ich auch schon mit einem ganz normalen kommandozeilen-tool. selbst ein simple Hello World habe ich in der Kommandozeile nicht unter 5 MB Speicherverbrauch gebracht.

gibt es möglichkeiten den verbrauch einzudämmen?

rotalever
2007-08-12, 20:39:52
Man müsste wohl irgendeinen Befehl haben, sodass der Memory Manager nicht so viel Speicher auf einmal holt.

In einem Internetforum bin ich auf folgende Lösung gestoßen:
http://www.coversant.net/dotnetnuke/Default.aspx?tabid=88&EntryID=4

Monger
2007-08-12, 20:58:42
80 MB ist doch noch kein Problem!
Vielleicht ist es nur deshalb so aufgebläht, weil der Garbage Collector gerade keinen Grund zum arbeiten sieht.


Speicheroptimierung bei Sprachen mit GC macht nur dann Sinn, wenn der Speicherverbrauch so gigantisch ist, dass aus dem RAM heraus geswappt werden muss. Das ist das einzige echte Performance Indiz.

Es gibt wohl auch Analysetools von Drittherstellern. Wenn man die nicht hat, muss man halt mal einen typischen Use Case im Programmablauf nachstellen, und von Hand nachzählen. Meistens fressen die Strings am meisten, weil man von denen oft Unmengen erzeugt, und sie relativ viel Speicherplatz fressen. Zwei Byte pro Zeichen sind kein Pappenstiel.

][immy
2007-08-12, 21:05:54
80 MB ist doch noch kein Problem!
Vielleicht ist es nur deshalb so aufgebläht, weil der Garbage Collector gerade keinen Grund zum arbeiten sieht.


Speicheroptimierung bei Sprachen mit GC macht nur dann Sinn, wenn der Speicherverbrauch so gigantisch ist, dass aus dem RAM heraus geswappt werden muss. Das ist das einzige echte Performance Indiz.

Es gibt wohl auch Analysetools von Drittherstellern. Wenn man die nicht hat, muss man halt mal einen typischen Use Case im Programmablauf nachstellen, und von Hand nachzählen. Meistens fressen die Strings am meisten, weil man von denen oft Unmengen erzeugt, und sie relativ viel Speicherplatz fressen. Zwei Byte pro Zeichen sind kein Pappenstiel.

ich weiß das man heutzutage in anderen dimensionen denkt, aber 80 MB beim start finde ich doch schon heftig, wenn man bedenkt was das tool macht. und desto mehr ich den sharepoint durchsuche desto größer wird es. der GC ändert überhaupt nichts daran. haben diesen auch regelmäßig (gerade um das zu reduzieren) aufrufen lassen, aber das hat absolut nichts gebracht.

wie bekommt ATi das CCC neuerdings eigentlich so klein? oder nutzen die kein .Net mehr

ScottManDeath
2007-08-12, 23:14:20
Ich nutzt den CLR 2.0 Profiler um meinen Speicherbedarf zu analysieren

http://www.microsoft.com/downloads/details.aspx?FamilyId=A362781C-3870-43BE-8926-862B40AA0CD0&displaylang=en


Und alles unter 100 MB ist kein Speicherleck =)

Monger
2007-08-13, 09:08:37
[immy;5747984']

wie bekommt ATi das CCC neuerdings eigentlich so klein? oder nutzen die kein .Net mehr
Doch doch, das ist immer noch auf Basis von .NET

Keine Ahnung was die da gedreht haben. Kannst sie ja mal fragen! ;)

Gast
2007-08-13, 09:52:45
http://www.cnblogs.com/Dah/archive/2006/11/25/572412.html