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.