Avatar billede arnejan Nybegynder
04. april 2004 - 19:12 Der er 8 kommentarer og
1 løsning

Oprydning vha finalize metoden.

Hej jeg laver noget såkaldt "liveconnect", og har nogen problemer med mit JSObject.

Jeg er ikke java ekspert, men jeg kan se at JSObject har en metode som hedder finalize:

finalize
  protected void finalize()

Finalization decrements the reference count on the corresponding JavaScript object.
Overrides:
finalize in class Object

Men når jeg prøver at skrive

JSObject win = JSObject.getWindow(this);
win.eval("");
win.finalize();

Kan jeg ikke få lov til at køre finalize

Hvordan kan jeg ryde bedst muligt op efter mig ?

Bliver finalize kørt hvis jeg skriver win = null ?
Avatar billede arnejan Nybegynder
04. april 2004 - 19:12 #1
Fordi finalize er protected? skriver den.
Avatar billede _carsten Nybegynder
04. april 2004 - 19:21 #2
Hvis du sætter win = null og derefter kalder System.gc();
vil garbage collector kalde finalize() og rydde op.

win = null;
System.gc();
Avatar billede arnejan Nybegynder
04. april 2004 - 19:45 #3
Tak , dvs det er ikke muligt specielt at kalde finalise selv.
Avatar billede _carsten Nybegynder
04. april 2004 - 19:50 #4
Jo, det kan du godt, så fremt du extender JSObject i stedet for.
JSObject' finalize er protected, hvilket vil sige at den kun kan
kaldes fra klasser i samme package, men

win = null;
System.gc();

Gør arbejdet
Avatar billede arne_v Ekspert
04. april 2004 - 20:20 #5
Et par løse kommentarer:

finalize er altid protected fordi det kun er meningen at den skal
kaldes af garbage collectoren eller fra sub klassers finalize.

protected = adgang fra samme pakke og sub klasser

System.gc() gennemtvinger ikke garbage collection - den foreslår det kun.
Avatar billede _carsten Nybegynder
04. april 2004 - 20:48 #6
Måske skulle det også tilføjes, at java's virtuelle maskine
gør det automatisk, såfremt der er behov for det.

Faktisk bruger jeg stort set selv kun System.gc() i forbindelse
med udskrivning, da udskrivning kan sluge lidt memory, men selvfølgelig
kan behovet opstå.

Jeg ved ikke hvor tit/ofte Arne bruger det.
Avatar billede arne_v Ekspert
04. april 2004 - 20:51 #7
Aldrig.

:-)
Avatar billede _carsten Nybegynder
04. april 2004 - 20:53 #8
Det havde jeg lidt på fornemmeren!

:-)
Avatar billede arnejan Nybegynder
05. april 2004 - 02:01 #9
Men tak så.

Jeg har en applet med nogen tråde, og noget liveconnect, og nogen gange hænger den Internet Explorer. Det er herre ireterende ?
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
Kategori
Kurser inden for grundlæggende programmering

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