Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JS/UŻYCIE PAMIECI] Aplikacja wykorzystująca sporo JS stale zwiększa zuzycie pamięci, jak temu zaradzić?
juzwa
post 16.06.2009, 09:07:20
Post #1





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 10.07.2006

Ostrzeżenie: (0%)
-----


Jestem w trakcie robienia aplikacji opartej w dużej części na JS i danych w formacie JSON, wykorzystuję do tego jQuery 1.3

chciałem zobaczyć jak to będzie działac w dłuższym okresie czasu i zapuściłem jakies dane testowe - uruchomiłem program i zostawiłem komputer - o ile sam program działał to jak sprawdziłem użycie pamięci przez przeglądarkę (FF) to z 100MB podskoczyło do 1,4GB tak 14x

pewnie to nie jest normalne i coś robię źle, ale co?

ogólnie aplikacja wygląda następująco

prócz jQuery są jeszcze 4 klasy, na podstawie tych klas jest stworzonych 6 obiektów, we właściwościach tych obiektów sa pojedyncze zmienne (int), a JSON jest najczęściej argumentem metody wywoływanej dla danego obiektu, prócz tego są dwa JSON-y globalne ładowane na początku aplikacji

nie chcę wklejać całego kodu JS, bo to szkoda i miejsca i czasu - ale mam pytanie, na co zwrócić uwagę, co mogę zmienić, poprawić ulepszyć

no chyba że takie zachowanie jest normalne smile.gif
Go to the top of the page
+Quote Post
nospor
post 16.06.2009, 09:48:49
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




moze masz wycieki pamieci. Nie usuwasz niepotrzebnych obiektow etc.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
wookieb
post 16.06.2009, 09:50:48
Post #3





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Spróbuj jeszcze na innej przeglądarce. Pamiętaj, że FF jest pamięciolubne.

Jeżeli używasz settimeout, badz clearInterval to pamietaj o ich usuwaniu jezeli ich nie uzywasz (clearTimeour, clearInterval)


--------------------
Go to the top of the page
+Quote Post
erix
post 16.06.2009, 09:58:43
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
nie chcę wklejać całego kodu JS, bo to szkoda i miejsca i czasu - ale mam pytanie, na co zwrócić uwagę, co mogę zmienić, poprawić ulepszyć

Używać profilera. Jest taki w Firebugu. Fakt, to tylko czasowo uwzględni, ale zawsze będziesz miał punkt zaczepienia, bo w większości przypadków duża zaalokowana pamięć = dłuższy czas operacji.

Cytat
- o ile sam program działał to jak sprawdziłem użycie pamięci przez przeglądarkę (FF) to z 100MB podskoczyło do 1,4GB tak 14x

A na innej podwersji Fx jest to samo...? Coś mi tu nie pasuje, ale raz: Fx zapełnia pamięć jak Vista (weźmie, ile ma ;p), dwa: zależy od klas...

Choć na 99% nie jest to sytuacja normalna.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
juzwa
post 16.06.2009, 11:53:26
Post #5





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 10.07.2006

Ostrzeżenie: (0%)
-----


wycieki pamięci w JS? niby cos musi "trzymać" zmienną i cały czas tworzyć nową - inaczej by zadziałał garbage collector

co więcej - zauwazyłem, że nawet jak nic się nie dzieje to uzycie pamięci rośnie - może się coś dzieje, ale nie jestem tego świadomy?

odpaliłem Safari 4 - przyrost był mniejszy i co więcej gdy np miałem już iles tam MB to jak dałem minimalizację to schodziło do 16-11MB potem przy maksymalizacji skakało do jakiś 28-33MB potem coś tam robiłem - rosło, ale wystarczyło że zminimalizuję/zmaksymalizuję i wracało do jako takiej normy

w przypadku FF takiej bajery z min/max nie ma

sprawdziłem też na Operze 9.64 - najmniej zużywa pamięci tak między 2/3 a 3/4 tego co Safari 4, a dodtakowo wystepuje bajer z min/max

czy to ma coś wspólnego z rysowaniem i odświerzaniem ekranu - przyznam, że mam trochę ruchomych rzewczy, jais wykres na płótnie, trochę divów absolutnych i takie tam, troche ajaxa itp itd


dla porównania zapuściłem sobie mapy googla i tak sobie porównalem i zobaczyłem, że przy poruszaniu się też jest tam przyrost pamięci - co prawna ja nie mam map, ani tylu zmian, ale czy pryczyna może tkwić w zmianie rzeczy widzialnych dla uzytkownika

Czas wykonania (30.094ms, 1837 wywołań)
Czas wykonania (31.14ms, 1641 wywołań)
Czas wykonania (27.295ms, 1643 wywołań)
Czas wykonania (29.509ms, 1743 wywołań)
Czas wykonania (29.189ms, 1643 wywołań)
Czas wykonania (29.2ms, 1643 wywołań)
Czas wykonania (29.204ms, 1642 wywołań)
Czas wykonania (29.729ms, 1643 wywołań)
Czas wykonania (29.392ms, 1642 wywołań)
co do czasu wywoływania - powyższe zestawienie polegało na czekaniu na wykonie akcji poprzez jakiś timer w JS (wykonywanie cykliczne)

chyba nie jest źle i to chyba świadczy, źle o JS? w tym czasie uzycie pamieci wzrosło z 68 do 126MB (FF)

nie wiem może, ktos na tej podstawie będzie mógł coś więcej powiedzieć

Ten post edytował juzwa 16.06.2009, 12:02:27
Go to the top of the page
+Quote Post
erix
post 16.06.2009, 12:06:20
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
inaczej by zadziałał garbage collector

W Fx? tongue.gif Nie wiem, jak w 3.5, ale w 3.0 dla mnie nie jest on rewelacyjny.

Cytat
czy to ma coś wspólnego z rysowaniem i odświerzaniem ekranu - przyznam, że mam trochę ruchomych rzewczy, jais wykres na płótnie, trochę divów absolutnych i takie tam, troche ajaxa itp itd

Dopiero teraz to mówisz...?

Samo rysowanie na płótnie - niestety - trochę zasobów pożera. A co do pozycjonowania absolutnego: zależy, naprawdę zależy. AJAX? Zależy, co masz na myśli. tongue.gif

A tak BTW, spróbuj na nieostylowanym DOM, na próbę - czy będzie nadal to samo? Choć przyznam z doświadczenia - canvas + półprzezroczyste warstwy stają się kulą u nogi dla większości przeglądarek. No i zależy oczywiście od platformy.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
juzwa
post 17.06.2009, 06:40:23
Post #7





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 10.07.2006

Ostrzeżenie: (0%)
-----


zrobiłem coś takiego, ze wszedzie gdzie argumentem był JSON to na końcu go usuwałem za pomocą delete i zostawiłem na noc operę z tym problemem - zużycie pamięci przez Operę to po nocce i działaniu na jakiś losowych danych - koło 50MB - czyli podobnie jak było z FF tylko, że na Operze
szkoda, że wcześniej tego nie zrobiłem tez i na Operze - ale porównując do FF to jakoś nie chce mi się wierzyć, ze tych parę deletów spowodowało 20x mniejsze zużycie pamięci (w porównaniu do tego samego czasu działania)
trzeba będzie jeszcze raz zostawić FF-a i się przekonać czy to cos dało, czy to tak juz jest i koniec
Go to the top of the page
+Quote Post
nospor
post 17.06.2009, 06:41:53
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




hehe, a mowilem ze masz wycieki pamieci to nie wierzyles winksmiley.jpg


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
erix
post 17.06.2009, 09:32:37
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Chyba nadal nie napisałeś, na jakim systemie odpalasz. [;


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
juzwa
post 17.06.2009, 12:02:02
Post #10





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 10.07.2006

Ostrzeżenie: (0%)
-----


jeśli chodzi o system to testuje to na XP a dokładniej na XAMPP-ie
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.06.2025 - 06:14