... | ... | @@ -129,7 +129,7 @@ Vi ser først og fremmest at værdierne er omvendte (dvs. højeste lysintensitet |
|
|
### Exercise 6
|
|
|
I denne exercise testede vi hvordan hukommelses forbruget reagerer på måden hvorved en string tilgås i et metode kald. Vi afprøvede to metoder: 1) Direkte indsætning af string i metodekald (blå streg) 2) Som reference til en feltvariabel (rød streg).
|
|
|
|
|
|
![alt text](https://photos-6.dropbox.com/t/2/AAAZYhkT6hRdU5wD2fO21N2hv7iIqsH3wt00yHtepUSZ4g/12/3327500/png/1024x768/3/1423760400/0/2/Lesson%201%20-%20Exercise%206.png/CIyMywEgASACIAMoASgC/zO-xC_3-TilPpksSn9EGW9frdaFKqsxpx5yldjF1uak)
|
|
|
![Lesson 1 - Exercise 6](http://gitlab.au.dk/uploads/group-5/group-5-lesson-1/73089f8266/Lesson_1_-_Exercise_6.png)
|
|
|
|
|
|
Den røde graf viser tydeligt at hukommelsesforbruget er nærmest konstant, hvorimod forbruget for den blå graf fremstår oscillerende. Årsagen til dette skyldes, at hver gang vi kalder en metode med 1), den direkte string indsætning, oprettes et nyt string objekt på Java heapen som bliver født ind i metode kaldet. Eftersom metoden bliver kaldt meget ofte (hvert 10 ms) fyldes heapen hurtigt op, hvilket garbage collectoren reagerer på og fjerner de string objekter der ikke længere bruges. Ved brugen af 2), en reference til en feltvariabel med en string, oprettes der ikke et nyt objekt for hvert metodekald --- string'en bliver blot hentet ind via dens reference i hukommelsen. Det er derfor bedst at opbevare statiske strings i en feltvariabel, og dermed undgå en overaktiv garbage collector, som potentielt set kan dræne batteriet meget hurtigt.
|
|
|
|
... | ... | |