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

1595

    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. En minä kyllä enää odota sinua

      Olet siellä sen harmaan kanssa. Niin, annoit minun nähdä lämpimät tunteesi siitä huolimatta. Se merkitsi kyllä paljon. O
      Ikävä
      49
      2568
    2. Niin surullinen

      onnettomuus taas. Voimia ihan kaikille läheisille,kavereille ja kouluun 🙏
      Lapua
      60
      2370
    3. Kehutaan vaihteeksi Perussuomalaisia

      Perussuomalaiset ovat olleet melkoisen lokakampanjoinnin kohteena, vaikka ovat saaneet paljon hyvää aikaiseksi. Nyt on
      Maailman menoa
      69
      2282
    4. Joka kolmas työtön on työkyvytön

      Viime vuonna työnhakuvelvoitteen ulkopuolella oli noin kolmannes työttömistä työnhakijoista. Huhheijaa, mihin suomalais
      Maailman menoa
      213
      1779
    5. Paloautoko se oli kolarissa Juntusrannan risteyksessä?

      Oli kuva paloautosta nettijutussa.
      Suomussalmi
      22
      1768
    6. Jos joku luulee että kaikki käy

      Sanon vain tämän. Minun kanssani ei neuvotella. Minun kanssani eletään tasavertaisesti. Jos se on liikaa, niin ovi rinn
      Ikävä
      68
      1660
    7. Sakin hivutus - ilmiö

      Miten tuollainen tuollainen ilmiö kuin ”sakin hivutus” syntyy? Mitä syitä ilmiön syntymiseen tarvitaan? Onko sakissa jok
      80 plus
      92
      1469
    8. Roiskeläpät takaisin niin alkaa lasit kestämään

      "Tuulilaseja hajottava talvi-ilmiö on ehkä ratkennut" Tämän päivän autoissa kun on esimerkiksi vanhempaa autokalustoa s
      Yleistä autoilusta
      22
      1450
    9. Ei ole rohkeutta tulla jututtamaan

      Voidaan me nähdä ja tervehtiä, sitäkin harvoin, mutta iso kynnys on edes mennä lähelle ja kysyä kuulumisia. Ymmärrät var
      Tunteet
      12
      1420
    10. Julkinen saunatilanne Haapavedellä, tämä on täyttä paskaa!

      Eilen Haapaveden uimahallin saunassa koettu tilanne oli täysin käsittämätöntä ja helvetin järkyttävää. Ladyboy harjoitti
      Haapavesi
      19
      1404
    Aihe