12

Obecnie tworzę aplikację wykorzystującą framework WebGL O3D WebGL i po raz pierwszy używam JavaScript tak intensywnie. Funkcje są już tylko w około 20% kompletne, ale już sama aplikacja zaczyna się od użycia, zabierając około 160 megabajtów pamięci, a pozostawiając działającą aplikację zużywa około 200kb na sekundę w Chrome, 2meg w FF; gdy ekran zostanie odświeżony. Kiedy to piszę, opuściłem Chrome 9 i właśnie dostałem 400 megabajtów pamięci. Teraz wkurzę się szczególnie za korzystanie z FF i szukam naprawdę dobrej dokumentacji na temat optymalizacji JavaScriptu, zapobiegania wyciekom pamięci, wszystkiego, co pomoże mi rozwiązać ten problem. Chciałbym również docenić wszelkie linki do niesamowitych narzędzi, które mi pomogą. Z góry dziękuję.Używanie pamięci i debugowanie w przeglądarce Chrome w przeglądarce Chrome/Firefox (Minefield)

Edytuj: Natknąłem się na Mozilla performance tools, ale potrzebuję czegoś prostego w użyciu, najlepiej z GUI, lub co najmniej z przyjaznym przewodnikiem. Również wiele z tych narzędzi jest dla Linuksa (używam Win7) lub wymaga zakupu/są tylko wiersz poleceń. + Naprawdę chciałbym zobaczyć coś dla Chrome :), ale przyjmuję odpowiedź, która dostarcza najbardziej przydatnych informacji.

Edytuj: Narzędzia dla programistów Google Chrome wyświetlają tylko 10 milionów pamięci, nie wiedząc, skąd pochodzi.

+0

Takie użycie pamięci (160 MB) nie jest niczym niezwykłym w aplikacjach 3D. Pomyśl o tym, ile zajmuje prawdziwa pamięć 3D - a do tego Twoja aplikacja jest napisana w JavaScript! Ale stały wzrost pamięci, którego doświadczasz, jest prawdopodobnie spowodowany jakimś wyciekiem pamięci, ale nie mogę ci więcej pomóc. –

+1

@musicfreak: Prawda, spodziewam się, że zajmie to sporo pamięci i będzie wymagać od użytkowników posiadania przyzwoitego komputera PC, ale zwiększenie użycia pamięci ogniowej nie spowoduje wydłużenia czasu pracy systemu użytkowników, jeśli zostaw to otwarte, myślę, że najlepiej, jak sobie z tym poradzę, zanim pójdę dalej! ponieważ chcę być w stanie poradzić sobie z tego typu rzeczami w przyszłości :) – Chris

+1

Tak, to prawda, i zdecydowanie uważam, że jest to spowodowane wyciekami pamięci (zarówno w implementacji WebGL, jak i aplikacji, najprawdopodobniej w drugiej), ale ja po prostu chciałem wspomnieć, że pierwotne użycie pamięci prawdopodobnie nie jest twoją winą. :) –

Odpowiedz

7

Czy miałeś okazję jeszcze sprawdzić płatność Speed Tracer? To powinno dać ci więcej tego, czego potrzebujesz, myślę.

W przypadku użycia pamięci najprawdopodobniej chcesz utworzyć profil sterty w narzędziach programistycznych Chrome na karcie "Profile". Możesz porównać wiele profili sterty, aby zobaczyć wykorzystanie pamięci.

+0

Dzięki temu, że rzuciłem okiem na znacznik prędkości, pokazuje on zegar regularnie odświeżający, ale jego działanie staje się powolne, gdy zużycie pamięci jest większe. Udało mi się zdobyć stertę pamięci i pokazuje 10 megabajtów przedmiotów, ale to nie wyjaśnia reszty. Mam wrażenie, że mój kod jest naprawdę zły, nie używam funkcji usuwania, o której czytam gdzieś. Jest to prawdopodobnie to, na co muszę się przyjrzeć, C# na przykład w większości przypadków radzi, abyś użył metody utylizacji na dowolnych klasach dziedziczących interfejs IDisposable po ich zakończeniu.Mam niestandardową klasę funkcji dla wszystkich moich obiektów 3d – Chris

+0

Powinno być narzędzie, które idzie i dodaje usuwanie do wszystkich nieużywanych właściwości w twoim kodzie - to jest narzędzie, za które zapłaciłbym. – Chris

+0

Istnieje również strona 'about: memory' w najnowszych wersjach Chrome. –

Powiązane problemy