| |
VB.NET - Ein- und UmsteigerErmittlung Größe des realen Arbeitsspeichers | | | Autor: BasicOpa | Datum: 14.01.20 13:58 |
| Hallo zusammen,
steht in VB.Net eine Funktion zur Verfügung, die Größe des auf dem PC vorhandenen realen Arbeits-Speichers zu ermitteln? Wenn ja, wie ist sie anzuwenden?
Vielen Dank im voraus
BasicOpa | |
Re: Ermittlung Größe des realen Arbeitsspeichers | | | Autor: Manfred X | Datum: 14.01.20 21:30 |
| Hallo!
Realer Arbeitsspeicher?
Es gibt die Windows Auslagerungsdatei,
vom System belegte Speicherbereiche,
komprimierte Bereiche, die aktuell nicht in Verwendung sind,
über Speicher-Treiber fest vergebene und deshalb nicht frei verfügbare Abschnitte
usw.
Was genau möchtest Du ermitteln? Zu welchem Zweck? | |
Re: Ermittlung Größe des realen Arbeitsspeichers | | | Autor: BasicOpa | Datum: 15.01.20 00:45 |
| Hallo Manfred,
ich möchte die tatsächliche Hardware-Ausstattung ermitteln. Unabhängig von Belegungszustand, virtueller Verfügbarkeit etc.
Zweck: Je nach Hardware-Ausstattung des PC sollen in abgestufter Form Programm-Varianten verfügbar sein oder nicht. Wissend, dass es lediglich Richtwerte sein können, weil sie ja nichts über die jeweils gegenwärtige Verfügbarkeit aussagen.
Viele Grüße
BasicOpa | |
Re: Ermittlung Größe des realen Arbeitsspeichers | | | Autor: Wobi | Datum: 15.01.20 00:51 |
| Hallo,
was verstehst du unter "realem" Arbeitsspeicher?
Meinst du den auf dem Mainboard physisch verbauten Arbeitsspeicher oder den zu irgendeinem von dir zu ermittelnden verfügbaren Arbeitsspeicher zu einem gewissen Zeitpunkt?
Ersten Punkt kannst du evtl. über WMI ermitteln, aber in der Praxis bringt das nichts, denn Windows in heutigen Versionen verwaltet den Arbeitsspeicher selbst, da werden Prioritäten entsprechend der grade aktiven Programme gesetzt usw.
Wofür brauchst du diese Angabe? Es ist heute nicht mehr möglich aufgrund der Menge des RAM auf die Leistungsfähigkeit eines Programms zu schließen so wie das unter DOS noch der Fall war.
Windows "krallt" sich heutzutage alles was es bekommen kann, verwaltet es aber auch sehr gut.
Gruß
Frank | |
Re: Ermittlung Größe des realen Arbeitsspeichers | | | Autor: BasicOpa | Datum: 16.01.20 12:21 |
| Hallo Manfred,
vielen Dank für die Info. Dann werde ich mal sehen, ob ich was geeignetes finde …
Viele Grüße
BasicOpa | |
Re: Ermittlung Größe des realen Arbeitsspeichers | | | Autor: BasicOpa | Datum: 16.01.20 12:38 |
| Hallo Frank (Wobi),
vorab - vielen Dank für die Antwort.
Es ist mir bekannt, dass der real auf dem Computer befindliche Arbeitsspeicher nichts zu seiner jeweiligen Verfügbarkeit aussagt. Auch ist mir die Existenz von Auslagerungs-Bereichen, virtuellem Speicher etc. bekannt. Natürlich habe ich keine Ahnung wie Win10 damit umgeht.
Darum geht es bei meinem Bedarf nicht.
Bei jeder Art von Programmen sind in er Regel Mindestanforderungen zum Betrieb der Programme genannt. Darunter auch eine Aussage zum Speicher. Zum Beispiel 16 GB RAM. Ich denke eine solche Grenze sagt aus, dass unterhalb dieser das betreffende Programm nicht - zumindest nicht "vernünftig" laufen kann. Und zwar ganz und gar unabhängig von den Fragen interner Verfügbarkeit.
In meinem Fall möchte ich bestimmte Funktionen unterhalb gewisser RAM-Grenzen erst gar nicht zulassen, ohne damit das gesamte Programm damit auszuschließen.
Viele Grüße
BasicOpa | |
Re: Ermittlung Größe des realen Arbeitsspeichers | | | Autor: BasicOpa | Datum: 17.01.20 12:03 |
| Hallo Effeff,
… wetten dass …
viele Grüße
BasicOpa | |
Re: Ermittlung Größe des realen Arbeitsspeichers | | | Autor: Manfred X | Datum: 17.01.20 20:54 |
| Hallo!
Wohl mit einem effektiv strukturierten und implementierten Programm.
Aber natürlich kann man mit nur einer "blödsinnigen" Anweisung jedes System sprengen. | |
Re: Ermittlung Größe des realen Arbeitsspeichers | | | Autor: effeff | Datum: 18.01.20 10:40 |
| Das glaube ich nicht - dann ist Dein Programm sehr ineffektiv; Ich komme nicht mal an meine 16 GB heran, wenn ich Videobearbeitung mache oder mittels Lightroom mehrere tausend Bilder exportiere.
Was macht denn Dein Programm - und wie macht es das?
EALA FREYA FRESENA | |
Re: Ermittlung Größe des realen Arbeitsspeichers | | | Autor: BasicOpa | Datum: 18.01.20 13:14 |
| Hallo Manfred, hallo Effeff,
vorab: vor lauter Blödsinn meinen Speicher "zu ballern" ist nicht mein Bestreben.
Probleme mit der Speichergröße hat mein Programm, wenn es auf Rechnern läuft, die über - nach heutigen Verhältnissen - eher wenig RAM verfügen. Z.B < 4.
Teil meines Programms ist es, den Verlauf von Eisenbahnschienen grafisch darzustellen. Die Bereiche erstrecken sich mitunter über Rechtecke deren reales Maß schon mal 20 mal 10 km ausmacht. Die Darstellung muss so erfolgen, dass die Gleisverläufe klar erkennbar sind und nicht ineinander übergehen.
Möglich, dass ich das nicht so programmiert habe, damit auch wenig Speicherplatz zur Anzeige reicht. Ich zeichne die Abläufe in eine größenmäßig angepasste PictureBox - und da kommt dann gelegentlich die Meldung "Zu wenig Speicherplatz". Um das zu verhindern, versuche ich die betreffende Funktion bein kleinen Speichern erst gar nicht zuzulassen.
Natürlich bin ich offen für Hinweise, wie man das besser machen könnte. Gleichwohl gilt für mich auch immer mal wieder der Grundsatz "der Zweck heiligt die Mittel". Un in meinem Alter kommt dazu, dass das, was man 50 Jahre gemacht hat langsam schwerer fällt, künftig anders zu machen ...
Viele Grüße
BasicOpa | |
Re: Ermittlung Größe des realen Arbeitsspeichers | | | Autor: Kuno60 | Datum: 18.01.20 19:14 |
| BasicOpa schrieb:
Zitat: | | Möglich, dass ich das nicht so programmiert habe, damit auch
wenig Speicherplatz zur Anzeige reicht. Ich zeichne die
Abläufe in eine größenmäßig angepasste PictureBox - und da
kommt dann gelegentlich die Meldung "Zu wenig
Speicherplatz". Um das zu verhindern, versuche ich die
betreffende Funktion bein kleinen Speichern erst gar nicht
zuzulassen. | |
Hallo BasicOpa,
es ist gut möglich den Arbeitsspeicher voll auszulasten, wenn man zum Beispiel sehr große Datenmengen auswertet und sämtliche Ergebnisse zwischenspeichert.
Die Meldung "Zu wenig Speicherplatz" kann auch kommen, wenn der Grafikspeicher nicht ausreicht. Dies ist zum Beispiel der Fall, wenn ich eine OSM-Karte von München zeichne und dann gleichzeitig eine OSM-Karte von Hamburg zeichne. Da die einzelnen Punkte zu weit entfernt liegen, reicht der Grafikspeicher nicht aus. Auch kommt da der Datentyp Single an seine Grenzen (zeichnen mit PointF, RectangleF usw.). | |
Re: Ermittlung Größe des realen Arbeitsspeichers | | | Autor: Manfred X | Datum: 18.01.20 19:45 |
| Schreibe eine Funktion, in der du die Gesamt-Graphik in gleich große Quadrate
unterteilst und zu jedem dieser Teil-Quadrat zusätzlich speicherst, welches Rectangle
des Gesamtbildes es enthält. Jede Teilgraphik wird in einer Datei als JPG oder PNG
gespeichert.
Einer zweiten Funktion übergibst Du als Parameter eine beliebigen Ausschnitt des Gesamtbildes
mit Angaben zur Position (Location, Size) im Gesamtbild. Diese Routine zerlegt das übergebene
Bild (Bitmap) und trägt die Abschnitte in die entsprechenden Teilgraphiken ein (laden,
aktualisieren, speichern)
Als drittes benötigst Du die Umkehrfunktion, die als Parameter den anzuzeigenden
Abschnitt des Gesamtbildes angibt (Location, Size) und aus den Teilgraphiken den
angeforderten Abschnitt zusammensetzt und als Bitmap zurückgibt.
Das ist jeweils nur ein bißchen Rechenarbeit und Nutzung der Methoden der
Graphics-Klasse (DrawImage).
Als weiteren Parameter der beiden letztgenannten Funktionen könntest du einen
Zoomfaktor einbauen, der es ermöglicht die Loaction/Size Angaben im Parameter
in den internen Maßstab der Teilgraphiken umzurechnen.
Der Trick besteht also darin, immer nur den gerade erstellten oder zur Anzeige benötigten
Bildausschnitt im Speicher zu halten. | |
Re: Ermittlung Größe des realen Arbeitsspeichers | | | Autor: BasicOpa | Datum: 19.01.20 14:23 |
| Hallo Manfred,
ja - genau so sollte wohl mein ansatz sein. Und so in etwa hab ich das auch - funktionierend - realisiert. Jedenfalls im Hinblick auf die Unterteilung in Teilbereiche. Ich versuche zunächst eine Gesamtansicht und zwar in dem ich die Zoomstufe zu anpasse, dass das Gesamtbild in eine PictureBox passt. Die verbringe ich dann in ein Panel und zeige dieses an. Für die Ermittlung dieser Zoomstufe ist hilfreich, wo die speicherbedingten Grenzen schon mal grundsätzlich sind. In der Folge legt ein User dann ein Lasso über einen Ausschnitt der Gesamtanzeige. Diesen Ausschnitt zeige ich in "vernünftiger" Größe an.
Mein Weg unterscheidet sich lediglich dadurch, dass ich nicht in festen Quadraten vorgehe, sondern den User variable Ausschnitte wählen lasse.
Inzwischen ermittle ich - auf sehr einfache Weise - den vorhandenen RAM. Mein Problem ist also gelöst.
Auf jeden Fall - vielen Dank für die Hilfe
BasicOpa | |
Re: Ermittlung Größe des realen Arbeitsspeichers | | | Autor: Manfred X | Datum: 21.01.20 11:21 |
| Nein, Du realisierst etwas anderes als meinen Vorschlag.
In meinem Beispiel werden nur die aktuell benötigten Abschnitte
im Speicher gehalten. Die festgelegten Abschnitte in meinem
Beispiel dienen nur der Speicherung des Bildes - die Anzeige
wird aus den jeweils benötigten Speicherbildern zusammengesetzt. | |
Re: Ermittlung Größe des realen Arbeitsspeichers | | | Autor: sv00010 | Datum: 21.01.20 11:47 |
| Timer einbauen, welcher ab und zu mal GC.Collect aufruft ? | |
Re: Ermittlung Größe des realen Arbeitsspeichers | | | Autor: BasicOpa | Datum: 21.01.20 11:59 |
| Hallo Manfred,
… das stimmt. Allerdings führen beide Wege letztlich zum selben Ergebnis, nämlich detailliert und gleichzeitig nur einen verhältnismäßig kleinen Ausschnitt anzuzeigen.
Die grundsätzliche Voreinstellung in Quadrate oder Rechtecke hat im speziellen Zusammenhang mit meiner Anwendung dann einen Nachteil, wenn die userbezogene Auswahl sich über die Grenze zweier vorbestimmten Bereiche erstreckt. Wie ich es mache kann ein User durch seine individuelle Bestimmung des Ausschnitts genau das vermeiden.
Viele Grüße
BasicOpa | |
Re: Ermittlung Größe des realen Arbeitsspeichers | | | Autor: Manfred X | Datum: 21.01.20 16:22 |
| Wie oben bereits beschrieben, lädt man dann eben sukzessive zwei
(oder vier) gespeicherte Abschnitte und zeichnet jeweils den für die
benötigte Abmessung erforderlichen Ausschnitt in eine Bitmap.
Der Hauptspeicherbedarf wird dadurch minimiert.
Man kann riesige Pläne in sehr guter Auflösung auf der Festplatte
speichern und relativ effizient Abschnitte in Orignalgröße oder
heruntergezoomt / verkleinert anzeigen.
Wenn der User sich durch das Bild bewegen will, kannst Du während der
Anzeige eines Abschnitts in einem (oder mehreren) Hintergrund-Thread
das nächste Bild (in der Bewegungsrichtung des Users) aufbauen.
Beitrag wurde zuletzt am 21.01.20 um 16:29:43 editiert. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Neu! sevDTA 3.0 Pro
SEPA mit Kontonummernprüfung
Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. Weitere Infos
|