chyba OutOfMemoryException jen na některém počítači   zodpovězená otázka

C#

Dobrý den,

rád bych se poradil co může být příčinou, že na jednom počítači je problém s pamětí (vyhazuje to chybu OutOfMemoryException) a na jiných ne ?

danný stroj má W7.

Předem děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zřejmě je na jednom počítači menší paměť než na druhém (popř. je poškozená).

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Na tuto otázku se nedá odpovědět. Příčin může být mnoho. Podíval jste se na jakém řádku v jakém souboru k vyjímce dochází? Vsadím se že ne. A ne, nemusíte mít Visual Studio nainstalované na tom počítači abyste to zjistil, stačí soubor s ladícími symboly .pdb.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jedná se o počítač uživatele ke kterému nemám přístup.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zjistěte, kolik má paměti. Co vaše aplikace dělá - pracuje s velkými obrázky, načítá nějaká velká pole? Pracuje s hromadou stringů a různě je upravuje?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Paměti má 2GB.

S obrázky se nepracuje. Se stringy též ne.

Opakovaně se načítají data do pole, které má pevně dannou velikost. Pokaždé je vytvořeno nové pole.

V podstatě se dělá toto:

 private void Proved()
        {
            int len = 10;

            for (int i = 0; i < len; i++)
            {
                UdelejNeco();
            }
        }

        private void UdelejNeco()
        {
            int[,] pole = new int[1000, 3];

            pole = GetPole();

            // udelej neco s polem
        }

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Neporadí někdo jak nejlépe hledat kde v projektu je možná chyba, která by mohla způsobovat zahlcení paměti? Jde mi o nějakou techniku sledování vytížení operační pamětí v průběhu běhu programu (z Visual studia).

Děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Visual Studio 2008 Team System (Visual Studio 2010 Ultimate) mají jako součást nástroj pro analýzu výkonu aplikace, který umožňuje měřit čas strávený metodami a využití paměti, nebo lze použít nástroje třetích stran (ANTS Profiler). Nebo můžete s trochou snahy nastavit čítače výkonu dostupné ve Windows, které mohou zaznamenávat některé údaje související s .NET aplikacemi a také využití procesoru a paměti jednotlivými procesy.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Mám nainstalované VS 2010 RC a koukal jsem na nějaké obsažené nástroje, nicméně sledování přímo operační paměti jsem nenašel.

Každopádně jsem to již řešil pomocí krokování kódu a sledování paměti ve Správci úloh.

Našel jsem chybu v programu.

Děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Žádné sledování paměti tam není, psal jsem že je tam nástroj pro měření výkonu aplikace, jmenuje se to Profiler. V závislosti na nastavení tím lze měřit i vytížení paměti. Ze Správce úloh nezjistíte nic, to co je u procesu ve Správci úloh je tzv. pracovní sada, což jsou data v paměti, která nelze odkládat do stránkovacího souboru, je to tedy prakticky nicneříkající hodnota.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback