Announcement

Collapse
No announcement yet.

Speicherbedarf bei .NET

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Speicherbedarf bei .NET

    Hallo zusammen.

    Ich habe eine Anwendung geschrieben, gemerkt, dass mit dem Speicherbedarf was nicht stimmt. Ein simples Hello World mit 1 Fenster braucht um die 20MB!!! Das kann doch nicht sein!!!???

    Weiss jemand Rat?

    Bodo

  • #2
    Wieso nicht? Das .NET-Framework benötigt ja einiges an Platz und da ja im Taskmanager auch der benötigte Speicher aller gezogenen DLL's mit angezeigt wird kann das schon sein. Die nächsten 20 MB zu erreichen wird aber um einiges schwieriger.

    Comment


    • #3
      Hallo,

      Das kann doch nicht sein!!!???
      angenommen, das Miniprogramm erweitert in einer Schleife einige tausend Mal eine string-Zeichenkette. Da ein String in .NET immutable ist, wird bei jedem Schreibzugriff eine neue Instanz der String-Klasse erzeugt und die neu zusammengesetzte Textinhalt zugewiesen. Am Ende stehen somit tausende string-Instanzen beim Garbage Collector auf der "ToDo-Liste" (bei der StringBuilder-Klasse passiert das nicht, aber das Beispiel soll ja nur das Prinzip verdeutlichen).

      Wenn der Rechner nun mit 1 GByte RAM ausgestattet ist und kein anderer Prozess zusätzlichen freien Speicher anfordert, wird der Garbage Collector (GC) nicht anspringen, weil noch genügend Ressourcen frei sind. Denn wenn noch genügend RAM frei ist, lohnt es sich nicht, für das Aufräumen CPU-Takte zu verbraten. In der Voreinstellung des .NET Frameworks wird der GC im Hintergrundmodus konfiguriert (siehe Abbildung). Nur dann, wenn sich mehrere Prozessoren im Rechner "langweilen", macht der Luxus "Nicht mehr benötigten Objektinstanzen durch den GC sofort wieder freigeben" einen Sinn.
      Attached Files
      Zuletzt editiert von Andreas Kosch; 18.05.2007, 12:21.

      Comment


      • #4
        hm das ist richtig blöd
        ich versuch so wenig wie möglich speicher zu belegen mit
        Me.Refresh()
        wird etwas weg gefresht

        MfG
        Jay

        EDIT: bei VB.NET natürlich

        Comment


        • #5
          Dann poste doch mal deinen Code des OnPaint/OnDraw-Ebenhandlers?

          Comment

          Working...
          X