Drukowanie - memory leak

Zapytania SQL, widoki, Crystal, definicje filtrów, szybkich raportów, wydruków, obiekty COM .NET

Moderator: mikey

pawel.sroczynski
Posty: 8
Rejestracja: 07 maja 2017, 20:54
Rola: Administrator CDN XL
Wersja: 2016

Drukowanie - memory leak

Post autor: pawel.sroczynski »

Cześć,

Poniższy kod powoduje wydruk plików na drukarkę.
Zauważyłem jednak, że każdy wydruk to +100 MB zajętej wirtualnej pamięci.
Łatwo się domyślić, że pamięci po chwili brakuje.
Odpowiedzialny jest za to proces splwow64.exe.

Czy wiecie co to może być?
Jakiś COM nie zwalnia pamięci?

Kod: Zaznacz cały

            var documentsInfo = (DokumentHaMag)dbSession.CreateObject(
                "CDN.DokumentyHaMag", "[TrN_NumerPelny]='" + receiptNumber + "' ");

                var format = new WydrFormat
                {
                    GenRapReportType = 1,
                    GenRapNewReportInitObjects = "FakturaSpr",
                    OptimaObjectTypeInfo = documentsInfo,
                    ZrodloID = 0,
                    ID = _printTemplateIdentifier,
                    FiltrSQL = "TrN_NumerPelny = '" + receiptNumber + "'",
                    Urzadzenie = (int) UrzadzenieWydrukuTyp.DrukarkaInna,
                    Drukarka = _printerName,
                    WyslijMaila = 0
                };

                var zmienne = new CDNLib.Dictionary();
                format.Wykonaj(zmienne);
Pozdr.
P.

yakhub
Posty: 91
Rejestracja: 25 lis 2008, 16:41
Rola: Administrator CDN XL
Wersja: 9.2

Re: Drukowanie - memory leak

Post autor: yakhub »

Zauważyłem to samo, przy innych operacjach z API Optimy:

viewtopic.php?f=17&t=3284&p=15046#p15046

Załatwiłem to w ten sposób, że gdy wykonuję serię operacji w pętli, to co kilka obiegów zapisuję zmiany, zamykam sesję i wylogowuję się, a potem loguję ponownie. W ten sposób zwalniam pamięć, i nie dopuszczam do wysypania się całej aplikacji.

Jak ktoś wtedy napisał: "Mądre do końca to nie jest", ale pomogło, a aplikacja działa poprawnie już 3 rok...

Wadą rozwiązania jest to, że wtedy działa to wszystko dosyć wolno, ale często nie jest to dyskwalifikujące.

pawel.sroczynski
Posty: 8
Rejestracja: 07 maja 2017, 20:54
Rola: Administrator CDN XL
Wersja: 2016

Re: Drukowanie - memory leak

Post autor: pawel.sroczynski »

Dziękuję. Sprawdzę i dam znać czy działa :-)

Obawiam się jednak, że nie pomoże, bo robiłem tak jak mówisz.
Za nie zwalnianie pamięci jest odpowiedzialny jakiś inny proces, ale na pewno API do drukowania w jakiś sposób go wykorzystuje i stąd ten proces nie kończy się.

Szukam kogoś, kto byłby w stanie przygotować mi wydruk używając fakturę z Optima + Crystal Reports. Komercyjnie.
Jeśli ktoś jest zainteresowany, to proszę o kontakt.

ODPOWIEDZ