Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyciek pamięci (jQuery), jedna zakładka zajmuje 1GB pamięci w chrome
kamloo21
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 8.07.2012

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


Hej
Mam problem z jquery , napisałem kilka animacji , wszystko ładnie działa lecz po pewnym czasie (jakieś 10min) drastycznie zwiększa się użycie pamięci które dochodzi do 1GB na 1 zakładke w Chrome.
Domyślam się że animacja jest źle zloopowana ale wydaję mi sie że jest OK. Próbowałem kilku różnych rzeczy

http://wytestuj.cba.pl/tyla/send.php Chodzi mi o tą animacje konkretnie (na reszcie strony jest inna więc nie zmieniajcie zakładki)

  1. $(document).ready(
  2. function animuj(){
  3. $("#loga").animate(
  4. { backgroundPosition: "+=2000" }, 19000 //animacja paska na dole
  5. ).animate(
  6. { backgroundPosition: "-=2000" }, 19000 //animacja paska na dole
  7. );
  8.  
  9. $("p.active").prev("p").css("border-bottom-color","#363732"); //zmiana koloru ramki nad .active
  10.  
  11. $("#menu p").hover( //animacja menu
  12. function(){
  13. $(this).prev().css("border-bottom-color","#363732");
  14. $(this).addClass("hover");
  15. },
  16. function(){
  17. if(!$(this).hasClass('active'))
  18. $(this).prev().css("border-bottom","#666 dotted 2px");
  19.  
  20. $(this).removeClass("hover");
  21. }
  22. );
  23.  
  24. setInterval(animuj,40000);
  25. }
  26. );
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kamloo21
post
Post #2





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 8.07.2012

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


Poczytałem troche o setInterval i setTimeout i zastosowałem sie do twoich rad.
Sama zamiana z setInterval na setTimeout rozwiązała problem i teraz strona sie nie zawiesza i nie pobiera 1GB pamięci , lecz nadal bierze ~140MB co jest dużą liczbą
Myśle że drugie rozwiązanie które mi podesłałeś będzie OK, jak przerobie to napisze co i jak. Dzięki ! (IMG:style_emoticons/default/smile.gif)


PS. W drugim rozwiązaniu jest var jLoga;
Czemu odrazu nie ustawiłeś wartości jLoga = $("#loga") ?

Ten post edytował kamloo21 2.05.2013, 18:02:51
Go to the top of the page
+Quote Post
zegarek84
post
Post #3





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


Cytat(kamloo21 @ 2.05.2013, 19:00:10 ) *
PS. W drugim rozwiązaniu jest var jLoga;
Czemu odrazu nie ustawiłeś wartości jLoga = $("#loga") ?

tylko to zależy, kiedy zaczyna się o tym myśleć ;p - a to dosyć ważne, gdyż jest to dostępne dopiero po documentready ;p, czyli jak cały DOM załadowany, po to z tej metody kożystałeś... ;p... trochę inaczej zapisane a to samo znaczące ;p - po prostu wcześniej tego elementu anie znajdziesz...
[JAVASCRIPT] pobierz, plaintext
  1. (function(){
  2. var jLoga;
  3. function animuj(){
  4. jLoga.animate(
  5. {
  6. backgroundPosition: "+=2000"
  7. }, 19000 //animacja paska na dole
  8. ).animate(
  9. {
  10. backgroundPosition: "-=2000"
  11. }, 19000 //animacja paska na dole
  12. );
  13.  
  14. $("p.active").prev("p").css("border-bottom-color","#363732"); //zmiana koloru ramki nad .active
  15. }
  16. function start(){
  17. jLoga = $("#loga");
  18. $("#menu p").hover( //animacja menu
  19. function(){
  20. $(this).prev().css("border-bottom-color","#363732");
  21. $(this).addClass("hover");
  22. },
  23. function(){
  24. if(!$(this).hasClass('active'))
  25. $(this).prev().css("border-bottom","#666 dotted 2px");
  26.  
  27. $(this).removeClass("hover");
  28. }
  29. );
  30. setInterval(animuj,40000);
  31. animuj();
  32. }
  33. $(document).ready(
  34. start
  35. );
  36. })();
[JAVASCRIPT] pobierz, plaintext

Go to the top of the page
+Quote Post

Posty w temacie


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 Aktualny czas: 16.10.2025 - 18:27