Visual Basic Forum

Visual Basic Forum
für VB6 und VB.NET Programmierer
 
RegistrierenRegistrieren  LoginLogin

Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB.NET] Source Codes
Autor
Nachricht
Bahamut_
« Moderator »<b><font color=green>« Moderator »</font



Anmeldedatum: 12.12.2006
Beiträge: 250

Memory Flush - Ramverbrauch deutlich senken!
Verfasst am: 02.12.2007, 12:52

Hab vorhin im Netz eine sehr interessante Klasse von Cory Smith gefunden:

Code:

Public Class MemoryManagement

    Private Declare Function SetProcessWorkingSetSize Lib "kernel32.dll" ( _
      ByVal process As IntPtr, _
      ByVal minimumWorkingSetSize As Integer, _
      ByVal maximumWorkingSetSize As Integer) As Integer

    Public Shared Sub FlushMemory()
        GC.Collect()
        GC.WaitForPendingFinalizers()
        If (Environment.OSVersion.Platform = PlatformID.Win32NT) Then
            SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle, -1, -1)
        End If
    End Sub

End Class


Diese entlädt alles unnötige aus dem Ram, denn selbst ein Projekt mit nur einer leeren(!) Form braucht 15-16 MB Arbeitsspeicher. Das liegt aber nur daran, dass sich die .Net Anwendungen immer schonmal "vorsichtshalber" mehr reservieren als sie brauchen.

Aufgerufen wird das ganze durch

Code:
MemoryManagement.FlushMemory()


Aber Achtung: Den Code niemals aufrufen wenn euer Programm irgendwelche Berechnungen etc macht. Denn wenn man dabei eine GarbageCollection laufen lässt kann dies zu einer hohen Auslastung führen.

Ihr müsst euch also gut überlegen ob ihr einfach einen Timer nehmt der auch mal zu einen blöden Moment ausgelöst werden kann oder ob ihr genau definiert wann das Programm "ausmisten" soll.

Man kann ja z.b wenn es im Tray läuft einen Timer nehmen und wenn das Prog aktiv ist den Timer ausmachen.
_________________
VB.Net-Compiler: http://www.microsoft.com/germany/express/download/default.aspx
VB.Net-eBook: http://www.galileocomputing.de/openbook/visual_basic/
 
tr4st_
« Moderator »<b><font color=green>« Moderator »</font



Anmeldedatum: 17.12.2007
Beiträge: 315
Wohnort: Private Class _ Villa()


Verfasst am: 19.02.2008, 10:07

Super geil, vielen dank Smile
Durch diese tolle Klasse habe ich mal eben den Ressourcen Verbrauch meines Programmes von 10.356K auf 4.616K gesenkt Smile

Code:
CA2001 : Microsoft.Reliability : Entfernen Sie den Aufruf an GC.Collect aus "'MemoryManagement.FlushMemory()'". Das Erzwingen von Garbage Collection ist normalerweise nicht erforderlich und kann die Leistung wesentlich herabsetzen.

_________________
 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB.NET] Source Codes

Tags: ram, memory, flush, leeren, arbeitsspeicher, ramverbrauch

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Wie kann ich mich bei euch anmelden?? 796 20.05.2002, 00:28
Keine neuen Beiträge [Video] *.dll & *.ocx Installer 2433 06.03.2008, 20:19
Keine neuen Beiträge Eine kleine Frage an euch.. 906 30.09.2007, 08:57
Keine neuen Beiträge Dll injection/uninjection 1345 27.09.2007, 07:12
Keine neuen Beiträge DLL Injection 1020 18.07.2008, 14:58
 



[ Time: 0.1549s ][ Queries: 85 (0.0229s) ][ GZIP on - Debug on ]