Announcement

Collapse
No announcement yet.

Memory (Arbeitsspeicher) für Prozess begrenzen?

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

  • Memory (Arbeitsspeicher) für Prozess begrenzen?

    Hallo,

    gibt es eine Möglichkeit in .NET (Vb / C#) den Arbeitsspeicher für den Prozess auf z.B. 2 GB zu begrenzen ?

    Ziel ist es das der Prozess sich nicht kurzfristig zu viel Arbeitsspeicher resserviert bzw. verwendet, da sonst die Maschine zu läuft.

    Im Voraus besten Dank für eine kurze Info.

    mfg Jürgen

  • #2
    Kannst du die Frage näher erläutern? Was soll den bei erreichen der 2GB passieren? Möchtest du das dein Programm abschmiert wenn es entsprechend deiner Programmierung doch mehr anfordert? Kein Programm fordert von sich aus einfach so Speicher an, das muss schon vom Programmierer so programmiert worden sein.

    Comment


    • #3
      da sonst die Maschine zu läuft.
      und die pagefile.sys? ist die dann auch zu?
      Christian

      Comment


      • #4
        Arbeitsspeicher für Prozess begrenzen ?

        Sorry das ich mich jetzt erst melde, war unterwegs.

        Es handelt sich bei dem Problem um einen Service der entsprechende Daten aufbereitet und in eine MSSQL Datenbank schreibt. Beim MSSQL Server kann man einen Parameter für den maximalen Speicherbedarf setzen. Darauf dachte das ich dies beim Service auch machen könnte .

        Wie recht Ihr habt !!! Da muss ich wohl an der Abwicklung noch etwas optimieren damit der Bedarf gar nicht so nach oben gehen kann.

        Wie kann man den aktuellen Speicherbedarf am einfachsten ermitteln ?

        mfg Jürgen

        Comment


        • #5
          Sich einfach mal die passenden Indikatoren im Performancemonitor(Leistungsüberwachung) ansehen?

          Comment


          • #6
            Arbeitsspeicher für Prozess begrenzen ?

            ich meinte im Code ?

            Comment


            • #7
              Dem Code kannst du das wohl kaum ansehen. Da brauchst du schon den laufenden Prozess um eine Aussage treffen zu können.
              Wenn du explizit die Codestellen finden willst die hohen Speicherverbrauch verursachen um von da aus zu optimieren wäre dann ein echter Profiler wie zum Beispiel AQTime gefragt.

              Du sprichts bei deiner Anwendung von Service. Reden wir von einem Prozess der in irgendwas gehostet wird(IIS, WAS, NT Dienst e tc.) und damit zumindest teilweise fremdbestimmt ist?

              Comment


              • #8
                der Gedanke ist einfacher, ich möchte nur während der Laufzeit prüfen wie hoch der Speicherbedarf ist, dann ggf. darauf reagieren.
                Es handelt sich um ein Service der Daten aus Textfiles in eine MSSQL Datenbank überträgt.

                Comment


                • #9
                  Und, wie sollte die Reaktion aussehen? Textfile beenden?Jede 2. Zeile einlesen?

                  Irgendwie ist mir das Problem unverständlich. Wenn die Anwendung soviel Speicher braucht um ein Textfile zu lesen und keine groben Programmierfehler vorliegen (C/C++) dürfte die Eingriffsmöglichkeit beschränkt sein
                  Christian

                  Comment


                  • #10
                    Ich lese die Datei ein und bereite die Daten auf, diese Aufbereitung würde ich dan abbrechen und an der Stelle später weiter machen.

                    Comment


                    • #11
                      Und durch welchen Vorgang ist später mehr Speicher da?
                      Christian

                      Comment


                      • #12
                        Was dir helfen könnte, wäre den GarbageCollector auszulösen. Dürfte aber bei sauberer Programmierung wenig bringen

                        http://msdn.microsoft.com/de-de/libr...c_methods.aspx

                        Da kriegst du auch deine Speicherinfos
                        Christian

                        Comment


                        • #13
                          Originally posted by Juergen123 View Post
                          Hallo,
                          gibt es eine Möglichkeit in .NET (Vb / C#) den Arbeitsspeicher für den Prozess auf z.B. 2 GB zu begrenzen ?
                          Ein 32bit Programm unter Windows bekommt sowieso nicht mehr als 2GB Speicher zugewiesen. Du musst es nur explizit als 32bit Version kompilieren, damit es unter 64bit OS auch als 32bit läuft.

                          Comment


                          • #14
                            Originally posted by Quaser View Post
                            Ein 32bit Programm unter Windows bekommt sowieso nicht mehr als 2GB Speicher zugewiesen. Du musst es nur explizit als 32bit Version kompilieren, damit es unter 64bit OS auch als 32bit läuft.
                            Wer sagt, dass er ein 64-Bit System hat? Es geht um den Arbeitsspeicher und dafür wird mehr reserviert, ggf. auf Platte. Des Weiteren kann man die Grenze durch Änderung in der boot.ini ändern
                            Christian

                            Comment


                            • #15
                              Originally posted by Christian Marquardt View Post
                              Wer sagt, dass er ein 64-Bit System hat?
                              Keiner, es war eine weiterführende Info, da dies nicht näher spezifiziert war
                              Originally posted by Christian Marquardt View Post
                              Es geht um den Arbeitsspeicher und dafür wird mehr reserviert, ggf. auf Platte. Des Weiteren kann man die Grenze durch Änderung in der boot.ini ändern
                              Und? Hilft das dem OP weiter? Er will es doch auf 2GB begrenzt haben

                              Comment

                              Working...
                              X