PHP memory_get_usage

0 Cevap php

Ben (PHP'nin memory_get_usage geldi) ve memory_get_peak_usage ().

the problem is that I found that these two functions do not provide the real memory used by the current script. My test script is:

<?php

echo memory_get_usage();

echo '<br />';

$a = str_repeat('hello', 100000);

echo '<br />';

echo memory_get_usage();

echo '<br />';

echo memory_get_peak_usage();

?>

Hangi döndürür:

355120

5355216

5356008

Bu ne anlıyorsunuz?

İlk değer str_repeat çalıştırmadan önce olduğu () yani 0 değeri olması gerekir.

İkinci işleminden sonra ve bir 0'dan büyük bir değer ama değil büyük değere sahip Tamam.

Üçüncü "zirve" değer olduğunu ve bunu bir işleme mikrosaniyede büyük değer olması gerektiğini düşünüyorum gibi ikinci biraz daha fazla bulunuyor.

Yani geçerli betiğin bellek tüketimi gerçek değeri, bu gibi gerektiğini düşünüyorum:

İlk bellek kullanımı - memory_usage ikinci bellek kullanımını =

peak_memory_usage = üçüncü (peak_usage) - ilk bellek kullanımı

verir:

1) 5355216 - 5000096 355120 = bayt

2) 5356008 - 5000888 355120 = bayt

Bu nasıl işliyor, ben ilk 355.120 bayt apache ve diğer modüller tarafından kullanılan tüm sistem ayrılan bellek olduğunu varsayıyorum. İlk değer artırmak veya sadece iki değer süreç artış veya azalış sonra) (str_repeat içinde tekrarların sayısını azaltmak zaman değiştirir ama asla ilk değer daha küçük geçmez gibi.

0 Cevap