MozillaPL.org - polskie centrum Mozilli

Główne menu:

Kosmiczny wyciek pamięci

Jak tworzyć strony WWW zgodnie ze standardami

Moderator: Pomocy?!

Kosmiczny wyciek pamięci

Postautor: TeoTN » 17 lipca 2013, 20:52

Przeglądarka: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0

Mam problem z Firefoxem, który generuje wprost nieprawdopodobnej wielkości wyciek pamięci na mojej stronie internetowej. Nie rozumiem właściwie, gdzie leży problem - w Google Chrome wszystko chodzi niebywale wprost płynnie, zaś FF już na starcie rezerwuje sobie 2GB RAMu, by po chwili dojść do 3.5GB, po czym animacja zaczyna się zawieszać i ostatecznie zrezygnowany zamykam zakładkę.

Animacja realizowana jest na canvasie przez javascript, podgląd tutaj: http://jsfiddle.net/YPZ4u/
Pracuję na Windows 7, przeglądarka FF 22.0 (aktualna), bez jakichkolwiek pluginów

Byłoby świetnie, gdyby ktoś powiedział mi jak zmodyfikować ten kod, żeby garbage collector zaczął sprzątać, co trzeba, no chyba, że po prostu pora zmienić przeglądarkę.
TeoTN
 

Odp: Kosmiczny wyciek pamięci

Postautor: dexter » 18 lipca 2013, 08:54

Przeglądarka: Mozilla/5.0 (Windows NT 5.1; rv:25.0) Gecko/20130715 Firefox/25.0

Podaj adres strony, samo fiddle jakoś nie działa.
dexter
Moderator
 
Posty: 8319
Z nami od: 02 października 2004, 21:30

Odp: Kosmiczny wyciek pamięci

Postautor: TeoTN » 18 lipca 2013, 11:14

Przeglądarka: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36

Poza jsfiddle strona nie jest dostępna w sieci, mam ją tylko lokalnie.
U mnie skrypt działa na kilku maszynach - przypominam, że trzeba wcisnąć "RUN", żeby wykonać skrypt.
TeoTN
 

Odp: Kosmiczny wyciek pamięci

Postautor: dexter » 18 lipca 2013, 14:06

Przeglądarka: Mozilla/5.0 (Windows NT 5.1; rv:25.0) Gecko/20130717 Firefox/25.0

Dobra, poszło na innej maszynie z czystym Firefoksem 22.

Wpisałem w drugiej karcie w pasku adresu about:memory i sprawdziłem ile bierze pamięci. Są to jakieś naprawdę niewielkie ilości:


Kod: Zaznacz cały
│  ├───7.00 MB (08.63%) -- top(http://jsfiddle.net/YPZ4u/, id=13)/active
│  │   ├──5.87 MB (07.23%) -- window(http://jsfiddle.net/YPZ4u/)
│  │   │  ├──4.24 MB (05.23%) -- js-compartment(http://jsfiddle.net/YPZ4u/)
│  │   │  │  ├──1.69 MB (02.08%) -- type-inference
│  │   │  │  │  ├──1.31 MB (01.62%) ── analysis-pool
│  │   │  │  │  └──0.38 MB (00.47%) ++ (2 tiny)
│  │   │  │  ├──1.63 MB (02.01%) ++ gc-heap
│  │   │  │  └──0.92 MB (01.14%) ++ (6 tiny)
│  │   │  ├──1.08 MB (01.33%) ++ layout
│  │   │  └──0.54 MB (00.67%) ++ (3 tiny)
│  │   ├──0.84 MB (01.04%) -- window(http://fiddle.jshell.net/YPZ4u/show/)
│  │   │  ├──0.69 MB (00.86%) -- js-compartment(http://fiddle.jshell.net/YPZ4u/show/)
│  │   │  │  ├──0.39 MB (00.48%) ++ gc-heap
│  │   │  │  ├──0.11 MB (00.14%) ++ type-inference
│  │   │  │  ├──0.11 MB (00.14%) ++ shapes-extra
│  │   │  │  ├──0.04 MB (00.04%) ++ objects-extra
│  │   │  │  ├──0.02 MB (00.02%) ── other-sundries
│  │   │  │  └──0.02 MB (00.02%) ── script-data
│  │   │  ├──0.14 MB (00.17%) ++ layout
│  │   │  ├──0.01 MB (00.02%) ++ dom
│  │   │  └──0.00 MB (00.00%) ── style-sheets
│  │   └──0.29 MB (00.35%) -- window(https://www.gittip.com/JSFiddle/widget.html)
│  │      ├──0.13 MB (00.16%) -- js-compartment(https://www.gittip.com/JSFiddle/widget.html)
│  │      │  ├──0.08 MB (00.10%) ++ gc-heap
│  │      │  ├──0.04 MB (00.04%) ── shapes-extra/compartment-tables
│  │      │  ├──0.01 MB (00.01%) ── objects-extra/slots
│  │      │  └──0.01 MB (00.01%) ── other-sundries
│  │      ├──0.13 MB (00.16%) ++ layout
│  │      ├──0.01 MB (00.02%) ++ dom
│  │      └──0.01 MB (00.01%) ── style-sheets
dexter
Moderator
 
Posty: 8319
Z nami od: 02 października 2004, 21:30

Odp: Kosmiczny wyciek pamięci

Postautor: TeoTN » 18 lipca 2013, 14:53

Przeglądarka: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36

To może ja dodam swój odpis z about:memory:
Kod: Zaznacz cały
Other Measurements
4.64 MB (100.0%) -- decommitted
├──3.08 MB (66.47%) -- workers/workers()
│  ├──1.55 MB (33.45%) ── worker(resource://gre/modules/PageThumbsWorker.js, 0xc88f000)/gc-heap/decommitted-arenas
│  └──1.53 MB (33.02%) ── worker(resource://gre/modules/osfile/osfile_async_worker.js, 0x5693400)/gc-heap/decommitted-arenas
└──1.55 MB (33.53%) ── js-non-window/gc-heap/decommitted-arenas

193 (100.0%) -- js-compartments
├──180 (93.26%) ── system
└───13 (06.74%) ── user

34.99 MB (100.0%) -- js-main-runtime
├──16.81 MB (48.05%) -- compartments
│  ├───9.82 MB (28.08%) -- gc-heap
│  │   ├──4.94 MB (14.13%) -- objects
│  │   │  ├──2.32 MB (06.64%) ── function
│  │   │  ├──1.96 MB (05.61%) ── ordinary
│  │   │  ├──0.53 MB (01.52%) ── dense-array
│  │   │  └──0.13 MB (00.36%) ── cross-compartment-wrapper
│  │   ├──3.04 MB (08.70%) -- shapes
│  │   │  ├──1.54 MB (04.40%) -- tree
│  │   │  │  ├──1.37 MB (03.91%) ── global-parented
│  │   │  │  └──0.17 MB (00.49%) ── non-global-parented
│  │   │  ├──0.98 MB (02.81%) ── base
│  │   │  └──0.52 MB (01.50%) ── dict
│  │   └──1.84 MB (05.25%) ── scripts
│  ├───2.50 MB (07.14%) -- type-inference
│  │   ├──1.97 MB (05.63%) ── analysis-pool
│  │   ├──0.50 MB (01.43%) ── type-scripts
│  │   └──0.03 MB (00.09%) ── allocation-site-tables
│  ├───2.38 MB (06.79%) -- shapes-extra
│  │   ├──1.50 MB (04.28%) ── compartment-tables
│  │   ├──0.46 MB (01.31%) ++ (2 tiny)
│  │   └──0.42 MB (01.20%) ── tree-tables
│  ├───1.29 MB (03.67%) -- objects-extra
│  │   ├──1.13 MB (03.24%) ── slots
│  │   └──0.15 MB (00.43%) ++ (2 tiny)
│  └───0.83 MB (02.36%) ++ (7 tiny)
├───9.96 MB (28.47%) -- zones
│   ├──6.34 MB (18.12%) -- gc-heap
│   │  ├──3.32 MB (09.48%) ── unused-gc-things
│   │  ├──2.66 MB (07.59%) -- strings
│   │  │  ├──1.73 MB (04.96%) ── short
│   │  │  └──0.92 MB (02.63%) ── normal
│   │  └──0.37 MB (01.05%) ++ (3 tiny)
│   ├──3.44 MB (09.82%) -- string-chars
│   │  ├──3.02 MB (08.62%) ── non-huge
│   │  └──0.42 MB (01.19%) ++ huge
│   └──0.19 MB (00.54%) ++ (2 tiny)
├───7.93 MB (22.68%) ── runtime
└───0.28 MB (00.80%) ++ gc-heap

16.45 MB (100.0%) -- js-main-runtime-gc-heap-committed
├──13.13 MB (79.84%) -- used
│  ├──12.76 MB (77.60%) ── gc-things
│  ├───0.28 MB (01.71%) ── chunk-admin
│  └───0.09 MB (00.53%) ── arena-admin
└───3.32 MB (20.16%) -- unused
    ├──3.32 MB (20.16%) ── gc-things
    └──0.00 MB (00.00%) ++ (2 tiny)

0 (100.0%) -- low-memory-events
├──0 (100.0%) ── physical
└──0 (100.0%) ── virtual

7.98 MB (100.0%) -- window-objects
├──4.60 MB (57.65%) -- dom
│  ├──3.89 MB (48.70%) ── orphan-nodes
│  ├──0.41 MB (05.20%) ── element-nodes
│  ├──0.19 MB (02.43%) ── other
│  ├──0.10 MB (01.28%) ── text-nodes
│  └──0.00 MB (00.05%) ++ (3 tiny)
├──2.71 MB (34.03%) -- layout
│  ├──0.94 MB (11.79%) ── style-sets
│  ├──0.84 MB (10.47%) ── pres-shell
│  ├──0.48 MB (06.05%) ── frames
│  ├──0.16 MB (02.03%) ── style-contexts
│  ├──0.13 MB (01.65%) ── rule-nodes
│  ├──0.09 MB (01.15%) ── pres-contexts
│  └──0.07 MB (00.88%) ++ (2 tiny)
├──0.66 MB (08.30%) ── style-sheets
└──0.00 MB (00.03%) ── property-tables

    5.67 MB ── canvas-2d-pixel-bytes
   79.92 MB ── explicit
    0.00 MB ── gfx-d2d-surfacecache
    9.69 MB ── gfx-d2d-surfacevram
   13.38 MB ── gfx-d2d-vram-drawtarget
    0.24 MB ── gfx-d2d-vram-sourcesurface
    0.45 MB ── gfx-surface-image
    0.00 MB ── gfx-textures
          0 ── ghost-windows
   60.54 MB ── heap-allocated
   65.73 MB ── heap-committed
    5.16 MB ── heap-committed-unused
      8.52% ── heap-committed-unused-ratio
    2.77 MB ── heap-dirty
   12.44 MB ── heap-unused
    0.15 MB ── images-content-used-uncompressed
   18.00 MB ── js-gc-heap
    1.29 MB ── js-main-runtime-temporary-peak
          0 ── low-commit-space-events
[b]1,791.43 MB ── private
1,798.46 MB ── resident
    5.59 MB ── storage-sqlite
2,136.86 MB ── vsize[/b]
TeoTN
 

Odp: Kosmiczny wyciek pamięci

Postautor: dexter » 18 lipca 2013, 15:08

Przeglądarka: Mozilla/5.0 (Windows NT 5.1; rv:25.0) Gecko/20130717 Firefox/25.0

Dobra, tylko daj z działu Explicit Allocations rozwiniętą gałąź w której masz tą kartę. I napisz, czy zajęcie pamięci wzrasta podczas uruchomionego skryptu, bo tu widać tylko, że js i canvas zabiera niewiele pamięci.
dexter
Moderator
 
Posty: 8319
Z nami od: 02 października 2004, 21:30

Odp: Kosmiczny wyciek pamięci

Postautor: TeoTN » 18 lipca 2013, 21:26

Przeglądarka: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36

Nie jestem pewien, czy to ta gałąź, ale:
Kod: Zaznacz cały
├──18.60 MB (22.82%) -- window-objects
│  ├──10.86 MB (13.32%) -- top(http://jsfiddle.net/YPZ4u/, id=24)
│  │  ├───8.18 MB (10.04%) -- active
│  │  │   ├──5.28 MB (06.48%) -- window(http://jsfiddle.net/YPZ4u/)
│  │  │   │  ├──3.67 MB (04.50%) -- js-compartment(http://jsfiddle.net/YPZ4u/)
│  │  │   │  │  ├──1.66 MB (02.04%) ++ gc-heap
│  │  │   │  │  ├──1.25 MB (01.53%) -- type-inference
│  │  │   │  │  │  ├──0.88 MB (01.07%) ── analysis-pool
│  │  │   │  │  │  └──0.37 MB (00.46%) ++ (2 tiny)
│  │  │   │  │  └──0.75 MB (00.92%) ++ (6 tiny)
│  │  │   │  ├──1.11 MB (01.36%) ++ layout
│  │  │   │  └──0.50 MB (00.62%) ++ (3 tiny)
│  │  │   ├──2.63 MB (03.23%) -- window(http://fiddle.jshell.net/_display/)
│  │  │   │  ├──2.47 MB (03.03%) -- js-compartment(http://fiddle.jshell.net/_display/)
│  │  │   │  │  ├──1.04 MB (01.28%) ++ gc-heap
│  │  │   │  │  ├──0.98 MB (01.20%) -- type-inference
│  │  │   │  │  │  ├──0.88 MB (01.07%) ── analysis-pool [2]
│  │  │   │  │  │  └──0.10 MB (00.13%) ── type-scripts [2]
│  │  │   │  │  └──0.45 MB (00.55%) ++ (4 tiny)
│  │  │   │  └──0.16 MB (00.20%) ++ (3 tiny)
│  │  │   └──0.27 MB (00.34%) ++ window(https://www.gittip.com/JSFiddle/widget.html)
│  │  └───2.68 MB (03.28%) -- js-zone(be34000)
│  │      ├──2.25 MB (02.76%) -- gc-heap
│  │      │  ├──1.18 MB (01.45%) ── unused-gc-things
│  │      │  ├──0.90 MB (01.11%) ++ strings
│  │      │  └──0.16 MB (00.20%) ++ (3 tiny)
│  │      └──0.43 MB (00.53%) ++ (3 tiny)


Zużycie pamięci wzrasta tylko i wyłącznie podczas uruchamiania tego skryptu, wymuszenie Garbage Collectora z poziomu about:memory zmniejsza na dosłownie ułamek sekundy zużycie RAMu, po zamknięciu zakładki niemal natychmiast wraca do normalnego poziomu, inne strony również działają normalnie.
TeoTN
 

Odp: Kosmiczny wyciek pamięci

Postautor: dexter » 19 lipca 2013, 10:04

Przeglądarka: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727)

Chyba wiem. Wyłącz w opcjach akcelerację grafiki i napisz tu, czy to coś pomogło.
dexter
Moderator
 
Posty: 8319
Z nami od: 02 października 2004, 21:30

Odp: Kosmiczny wyciek pamięci

Postautor: TeoTN » 19 lipca 2013, 15:36

Przeglądarka: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36

Jest nieco lepiej, zużycie RAMu waha się w granicach 300 - 800 MB, ale płynność animacji jest wciąż o lata świetlne za Google Chrome.
No i czy to znaczy, że każdy użytkownik przed wejściem na moją stronę będzie musiał wyłączyć akcelerację sprzętową?
TeoTN
 

Odp: Kosmiczny wyciek pamięci

Postautor: dexter » 20 lipca 2013, 13:46

Przeglądarka: Mozilla/5.0 (Windows NT 6.0; rv:24.0) Gecko/20130716 Firefox/24.0

To jest błąd specyficzny dla niektórych kart graficznych, dotyka niewielu użytkowników. U mnie działa pięknie.

https://bugzilla.mozilla.org/show_bug.cgi?id=767337#c77
dexter
Moderator
 
Posty: 8319
Z nami od: 02 października 2004, 21:30


Wróć do Tworzenie stron WWW

Kto jest online

Zarejestrowani użytkownicy: Bing [Bot], Google [Bot], Obywatel84

Przejdź do powiązanej strony

Nawigacja:

Stopka: