Używamy phantomjs do uruchomienia naszej strony testów qunit na naszym serwerze budowania TFS. Nasza wersja testu biegacza jest zbudowany z poniżej przykładPhantomjs umiera przez wysokie zużycie pamięci
https://github.com/ariya/phantomjs/blob/master/examples/run-qunit.js
Przez pewien okres czasu od liczby testów wzrosła od kilkuset do kilku tysięcy, a na piękny dzień phantomjs zaczął upaść. Dosłownie umiera mówiąc przesłać zrzut i kiedy zobaczysz zrzut to 0kb !!
Kiedy bliżej przyjrzeliśmy się temu procesowi odkryliśmy, że zużycie pamięci przez phantomjs wciąż rośnie, ponieważ phantomjs uruchamia testy i ostatecznie zawiesza się w 833 MB.
Tak, ta sama ilość pamięci była używana przez chrome i IE! I tak-tak, nasze testy były nieszczelne :(Naprawiliśmy to, wykorzystanie pamięci zostało obniżone o 50% na chrome i IE i spodziewaliśmy się, że phantomjs sobie z tym poradzi, ale nie, phantomjs wciąż się zawiesza, proces explorer pokazuje tę samą pamięć zużycie.
http://phantomjs.org/api/webpage/method/close.html
Według powyższej dokumentacji phantomjs uwalnia sterty alokacji tylko na zamknięciu? Czy to może być powód, dlaczego nasze stałe badanie spożywane mniej pamięci na chromie ale nie phantomjs? I wreszcie, jak to naprawić? Jak czy phantomjs nadal gromadzi śmieci zbierając obiekty javascript, aby zmniejszyć przydziały sterty?
Aktualizacja 1 - 07/28
Pobraliśmy się. Zmodyfikowałem skrypt, aby wykonać moduł testowy według modułu. W pętli po wykonaniu wszystkich testów dla modułu wołam page.close, więc zwalnia pamięć dla każdego modułu i nigdy nie buduje martwego stosu obiektów. Nie zamykając tego pytania od czasu rozwiązania problemu, a nie rozwiązania. Nadzieja twórców naprawi to kiedyś.
Jakie rodzaje struktur danych nie zostały załadowane Twoja strona zużywa 833 MB? To szalone! Nigdy nie słyszałem o aplikacji internetowej zajmującej tyle pamięci. –
@CameronTinker Gdy aplikacja działa samodzielnie, jej nie więcej niż 90 MB i pozostaje tam przez całe życie. Jest to aplikacja na jedną stronę zbudowana przy użyciu EmberJS. Zużycie 833MB to strona testu biegowego qunit .. –