Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Unset(); nie powoduje zwolnienia zajmowanej pamięci
papryk
post
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 6
Dołączył: 2.03.2011
Skąd: Wychylybyszyce :]

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


  1. <?php
  2. function waste()
  3. {
  4. $data = array();
  5. for($i=0;$i<=70000;$i++){
  6. $data[] = $i;
  7. }
  8.  
  9. $new = array();
  10. foreach($data as $set){
  11. $new[$set] = array(
  12. 'raz',
  13. 'dwa'=>md5(time()),
  14. 'list'=>4000
  15. );
  16. }
  17.  
  18. unset($new);
  19. unset($data);
  20. }
  21.  
  22.  
  23. ini_set('max_execution_time',3600);
  24. for($i=0;$i<40;$i++){
  25. waste();
  26. echo memory_get_usage(true).'<br/>';
  27. }


Powyższy kod działa tak jak zakładałem jednak tylko u mnie na localhoście. Natomiast w środowisku produkcyjnym wartości memory_get_usage(true); są ekstremalnie wysokie. Poniżej prezentuję wartości otrzymane na serwerze: PHP wersja 5.3.26, lokalnie taka sama wersja a wynik maksymalny to 6029312. Nie wiem dlaczego unset(); nie zwalnia pamięci zajmowanej przez te dwie tablice. Ktoś może mnie naprowadzić jak to zdebugować albo dlaczego jest takie duże zużycie?

14942208
28311552
39845888
...
86507520
88342528
92012544
...
97255424
97255424
97255424
...
97779712

przed: 101187584
po: 98041856

ale jak na takie coś to chyba i tak dużo?
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 22.12.2025 - 09:38