C# ja virtuaalimuisti

hoxhoxhox

Saako virtuaalimuistia tyhjennettyä ohjelman ajon aikana? Se nimittäin kasvaa tolkuttomasti. Eikä ympäristö itse sitä vapauta itse paitsi sitten kun ohjelma suljetaan kokonaan.
Ongelma on, että virtuaalimuistin kasvaessa yli 1GB:n ohjelma ei suostu enää käsittelmään uutta tietoa koska ilmoittaa täydestä muistialueesta.

5

1612

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Torak

      >> Eikä ympäristö itse sitä vapauta itse paitsi
      >> sitten kun ohjelma suljetaan kokonaan.

      Rajaa eri olioitten elinaikaa käyttämällä using lausetta ja Dispose():a, eiköhän se muistin kulutus siitä pienene.

      • hoxhoxhox

        Tein yksinkertasemman projektin ja suljin formeja dispose komennolla ja käytin GC.Collectia lisäksi. Silti virtuaalimuisti ei vähene sulkemisen..


      • Torak
        hoxhoxhox kirjoitti:

        Tein yksinkertasemman projektin ja suljin formeja dispose komennolla ja käytin GC.Collectia lisäksi. Silti virtuaalimuisti ei vähene sulkemisen..

        Tuli mieleen paljonko ohjelmasi käyttää muistia ettei se törmää 1.5Gb (oikeastaan kahden) muisti rajoitukseen.

        http://www.microsoft.com/technet/sysinternals/information/bootini.mspx

        Voihan sitä koittaa pakottaa:
        GC.Collect();
        GC.WaitForPendingFinalizers();

        Sitten tuli mieleen että jos puhutaan windowsin virtuaali muistista niin asetus täytyy olla automaattisella eikä kokojen min ja max välissä että heittovaihtotiedoston koko pienenee. Jotain tämmöistä muistelisin, ei ole muisti loppunut muutamaan vuoteen niin ei muista.


      • hoxhoxhox
        Torak kirjoitti:

        Tuli mieleen paljonko ohjelmasi käyttää muistia ettei se törmää 1.5Gb (oikeastaan kahden) muisti rajoitukseen.

        http://www.microsoft.com/technet/sysinternals/information/bootini.mspx

        Voihan sitä koittaa pakottaa:
        GC.Collect();
        GC.WaitForPendingFinalizers();

        Sitten tuli mieleen että jos puhutaan windowsin virtuaali muistista niin asetus täytyy olla automaattisella eikä kokojen min ja max välissä että heittovaihtotiedoston koko pienenee. Jotain tämmöistä muistelisin, ei ole muisti loppunut muutamaan vuoteen niin ei muista.

        Automaattisella on asetus.
        Kokeilin myös lisätä rivejä:

        GC.Collect();
        GC.WaitForPendingFinalizers();

        if (Environment.OSVersion.Platform == PlatformID.Win32NT)
        {
        SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1);
        }

        Viimeinen if lauseen sisällä saa Mem Usagen tippumaan, mutta jos tarkastelen Windows Task Managerin kautta muistitilanne: Mem Usage pysyy kohtuullisena mutta virtuaalimuisti jatkuu kasvuaan yli gigan jne. ja aiheuttaa ohjelmalle ongelmia. Ohjelmassa avataan ja suljetaan raskaita formeja. Onkohan GC:n muistinkäyttö näin huonoa vai mitähän pitäisi vielä kokeilla..


      • tätä
        hoxhoxhox kirjoitti:

        Automaattisella on asetus.
        Kokeilin myös lisätä rivejä:

        GC.Collect();
        GC.WaitForPendingFinalizers();

        if (Environment.OSVersion.Platform == PlatformID.Win32NT)
        {
        SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1);
        }

        Viimeinen if lauseen sisällä saa Mem Usagen tippumaan, mutta jos tarkastelen Windows Task Managerin kautta muistitilanne: Mem Usage pysyy kohtuullisena mutta virtuaalimuisti jatkuu kasvuaan yli gigan jne. ja aiheuttaa ohjelmalle ongelmia. Ohjelmassa avataan ja suljetaan raskaita formeja. Onkohan GC:n muistinkäyttö näin huonoa vai mitähän pitäisi vielä kokeilla..

        "Onkohan GC:n muistinkäyttö näin huonoa vai mitähän pitäisi vielä kokeilla.."

        Kokeile sitä mitä Torak aiemmin ehdotti, vai onko jokin syy miksi et niin tekisi? Eli:

        "Rajaa eri olioitten elinaikaa käyttämällä using lausetta ja Dispose():a, eiköhän se muistin kulutus siitä pienene."


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Kelekkakisat

      Mikä vakava onnettomuus sattunut kisoissa. On peruttu koko kisat. Pelastuskopteri näytti käyvän paikalla.
      Nivala
      26
      11002
    2. Aivan kauheaa

      Veikö koskiuoma taas ihmishengen? Se pitää kieltää!
      Imatra
      41
      8298
    3. Onko kaivattusi

      …mielestäsi älykäs, tai kenties tyhmä? Oma mielipide.
      Ikävä
      126
      5277
    4. Kuinka pitkä välimatka

      on teidän kotien välillä?
      Ikävä
      143
      3646
    5. Epäilen ettet edes

      Kehtaisi liikkua kanssani.
      Ikävä
      69
      3578
    6. Virkamiehille tarvitaan tuntuvat palkankorotukset

      Naistenpäivänä on syytä muistuttaa, että virkamiehen euro on vain 80 senttiä. Palkat tulee saattaa samalle tasolle yksi
      Maailman menoa
      35
      3534
    7. Oletko huomannut

      Yhden muutoksen?
      Ikävä
      33
      3167
    8. Jäikö meidän välit

      Mielestäsi Kesken?
      Ikävä
      55
      2529
    9. Olisipa saanut sinuun

      Tutustua paremmin. Harmi että aloin lopulta jännittämään kun näytit tunteesi niin voimakkaasti ja lähestyit niin voimaak
      Ikävä
      35
      2031
    10. Miltä mahtaa tuntua

      Sitten kun näet hänet pitkästä aikaa?
      Tunteet
      28
      1786
    Aihe