Avatar billede keepy Seniormester
27. oktober 2016 - 09:30 Der er 6 kommentarer

Service bruger Memory

Hej
Jeg har en service der loader dll'er op on runtime, efter forespørgsel via WCF.
Denne service bruger mere og mere memory, er der nogle der har ideer til hvordan dette kan ske.
Avatar billede jakobdo Ekspert
27. oktober 2016 - 13:07 #1
Glemmer du at nulstille eller frigive noget data igen ?
Det kan jo være din kode der er dårlig eller de dll'er du anvender, som ikke korrekt frigiver memory efter brug.

Også kaldet: Memory Leak
Avatar billede arne_v Ekspert
27. oktober 2016 - 15:12 #2
Loader du den sammel DLL flere gange eller cacher du referencer?
Avatar billede keepy Seniormester
28. oktober 2016 - 08:07 #3
Jeg loader flere forskellige DLL'er og måske flere gange, det kommer an på forspørslen via WCF.
Når servicen er færdig med at bruge dll'en disabler den eventet fra dll'en, og returner et data objekt til den som har kaldt servicen via WCF
Avatar billede arne_v Ekspert
28. oktober 2016 - 15:56 #4
Forslaget er at i.s.f.:

IFoobar fb = (IFoobar)Assembly.Load(dllname).CreateInstance(clzname);

at bruge:

if(Application[dllname+clznam] == null) {
      Application[dllname+clznam] = Assembly.Load(dllname).CreateInstance(clzname);
}
IFoobar fb = Application[dllname+clznam];

Jeg ved ikke om det hjaelper. Jeg synes ikke at dokumentationen af Assembly.Load angiver om den cacher internt. Men det kunne vaere vaerd at proeve.
Avatar billede keepy Seniormester
31. oktober 2016 - 08:03 #5
Hej Arne

Tak for dit svar.
Jeg bruger reflection til at loade dll'er op on runtime.
Det er en ren NT service jeg har, og derfor tror jeg ikke at jeg kan anvende System.Windows.Forms.Application
Avatar billede arne_v Ekspert
31. oktober 2016 - 13:58 #6
Korrekt.

Men i saa fald bruger du bare dit eget Dictionary<string,IFoobar> til det samme.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester