Radomił Ząbik 308 Napisano 12 Stycznia Udostępnij Napisano 12 Stycznia w [Sfera] Szukanie wycieku pamięci Przygotowałem aplikację, która importuje urządzenia serwisowe do Subiekta, za pomocą Sfery. Przy okazji, odbywają się też, odpowiednio dodawanie zleceń serwisowych, według określonych reguł, ale to już za pomocą Sfery zdarzeniowej. No i po około 600 wierszach, wywala mi błędem pamięci. Stosuje dodawanie w "using", przejrzałem zmienne z obu rozwiązań, czy gdzieś nie dodać Dispose, ale wyglądało ok. Podłączyłem wiec Debugowanie, zrobiłem Sobie dwie migawki i z analizy różnicy, wygląda, że sporą część tej pamięci, pochłonęły różne elementy Reguł Automatyzacji. Te wynikają, z ustawień użytkownika, i Swoje zapewne robią, ale pytanie, czy ja mogę jakoś odpowiednio wpłynąć na to, aby i one pamięć zwalniały? Różnica w pamięci z Debugera: Kod sfery zdarzeniowej, dodający Zlecenie: Debug.WriteLine("Tworzymy nowe zlecenie serwisowe - Po zapisaniu urządzenia."); IScenariuszeObslugiKlienta scenariusze = kontekst.Uchwyt.PodajObiektTypu<IScenariuszeObslugiKlienta>(); IKategorieZlecenSerwisowych kategorie = kontekst.Uchwyt.PodajObiektTypu<IKategorieZlecenSerwisowych>(); IRodzajeZlecenSerwisowych rodzaje = kontekst.Uchwyt.PodajObiektTypu<IRodzajeZlecenSerwisowych>(); IAsortymenty asortymenty = kontekst.Uchwyt.PodajObiektTypu<IAsortymenty>(); // tworzenie nowego zlecenia serwisowego using (IZlecenieSerwisowe zlecenie = zlecenia.Utworz()) { zlecenie.Dane.Podmiot = urzadzenieZapisane.Dane.Wlasciciel; zlecenie.Dane.ScenariuszObslugiKlienta = scenariusze.Znajdz(s => s.Nazwa == k.Value.DocelowyScenariusz).Dane; zlecenie.Dane.KategoriaZleceniaSerwisowego = kategorie.Znajdz(s => s.Nazwa == k.Value.DocelowyKategoria).Dane; zlecenie.Dane.RodzajZleceniaSerwisowego = rodzaje.Znajdz(s => s.Nazwa == k.Value.DocelowyRodzaj).Dane; zlecenie.Dane.SerwisowaneUrzadzenie = urzadzenieZapisane.Dane; // określenie daty planowanej nowego zleceniaa DateTime dataArchiwalnegoZlecenia = dataArchiwalnaUrzadzenia.Value; DateTime planowanaData = dataArchiwalnegoZlecenia.AddMonths(k.Value.MiesiecyOdZakonczenia); zlecenie.Dane.DataRozpoczecia = planowanaData; zlecenie.Dane.PlanowanaDataZakonczenia = planowanaData; Debug.WriteLine("Data zaplanowana: " + zlecenie.Dane.PlanowanaDataZakonczenia); //zlecenie.Dane.DaneOpisoweZleceniaSerwisowego.DiagnozaProblemu = "Scenariusz: " + k.Value.DocelowyScenariusz; if (!zlecenie.Zapisz()) { Debug.WriteLine("Nie można było zapisać zlecenia."); } else { Debug.WriteLine("Zapisanie identyfikatorów nowego zlecenia."); using (DbCommand addcommand = connection.CreateCommand()) { string zapytanieDodające = "INSERT INTO ModelDanychContainer.NOW_ZleceniaSerwisoweUtworzoneArchiwalne " + "(ZlecenieRealizujace_Id,Urzadzenie_Id,DocelowyScenariusz,DocelowyKategoria,DocelowyRodzaj) " + "VALUES(" + zlecenie.Dane.Id + "," + urzadzenieZapisane.Dane.Id + ",'" + k.Value.DocelowyScenariusz + "','" + k.Value.DocelowyKategoria + "','" + k.Value.DocelowyRodzaj + "');"; addcommand.CommandText = zapytanieDodające; connection.Open(); addcommand.ExecuteNonQuery(); connection.Close(); } } } Kodu dodawania urządzenia już nie wrzucam, bo nie obstawiam, że to z jego winy, tam zresztą jest using na Utworz i pola własne, no może jest ich 30 razem, ale to raczej nie to. Ewentualnie jak inaczej szukać co pochłania tą pamięć, będę wdzięczny za podpowiedź, bo tutaj moje zasoby wiedzy, już wymiękają. Link to postu
Michał Gałecki 82 Napisano 19 Stycznia Udostępnij Napisano 19 Stycznia w [Sfera] Szukanie wycieku pamięci Załączony screen nie wskazuje na problemy ze zwalnianiem pamięci przez obiekty automatyzacji. Przeprowadzone przez nas testy również tego nie potwierdziły. Problem musi występować gdzieś indziej. Czy byłby Pan w stanie podesłać nam kompletne rozwiązanie sferyczne, na którym możliwe byłoby zreprodukowanie problemu z wyciekami pamięci? Link to postu
Michał Gałecki 82 Napisano 7 Lutego Udostępnij Napisano 7 Lutego w [Sfera] Szukanie wycieku pamięci Potwierdzamy problem z wyciekami pamięci. Nie jest to zależne od rozwiązania sferycznego. Zostanie on poprawiony w jednej z najbliższych wersji. 1 Link to postu
Infobot nexo 99 Napisano 12 Lutego Udostępnij Napisano 12 Lutego w [Sfera] Szukanie wycieku pamięci Zgłoszenie zostało zrealizowane w wersji 49.0.0. Fragment listy zmian: "Rozwiązano problem z wyciekami pamięci. Problem mógł być widoczny w niektórych modułach Gestora nexo."; Link to postu
Polecane posty