हां यह मुक्त हो जाता है।
आप का उपयोग करके यह देख सकते हैं:
function a() {
$var = "Hello World";
$content = "";
for ($i = 0; $i < 10000; $i++) {
$content .= $var;
}
print '<br>$content size:'.strlen($content);
print '<br>memory in function:'.memory_get_usage();
return null;
}
print '<br>memory before function:'.memory_get_usage();
a();
print '<br>memory after function:'.memory_get_usage();
उत्पादन:
memory before function:273312
$content size:110000
memory in function:383520
memory after function:273352
इससे पहले समारोह पीएचपी इस्तेमाल किया 273,312 बाइट्स।
फ़ंक्शन समाप्त होने से पहले हमने फिर से मेमोरी उपयोग की जांच की और यह 383520 का उपयोग किया।
हमने 110000 बाइट्स की $ सामग्री का आकार चेक किया।
273312 + 110000 = 383312
शेष 208 बाइट अन्य चर से हैं (हमने केवल $ सामग्री की गणना की है)
फ़ंक्शन समाप्त होने के बाद हमने फिर से मेमोरी उपयोग की जांच की और यह वापस (लगभग (40 बाइट्स अंतर)) था जैसा कि पहले था
40 बाइट्स अंतर कार्य घोषणाओं और लूप घोषणा के लिए होने की संभावना है।
स्रोत
2015-04-01 18:42:05
* कुशलतापूर्वक * - आप इस तरह से नहीं पूछ सकते हैं। आपको लगता है कि * कुशलता से * कुछ अलग हो सकता है (बीटीडब्ल्यू पूछने की आपकी शैली की अत्यधिक संभावना) वास्तव में *** PHP में ** कुशलतापूर्वक * है। – hakre
अच्छी तरह से मेरा मतलब है, जैसे ही यह स्पष्ट हो जाता है कि चर का उपयोग नहीं किया जाएगा। –
पहले भी। समारोह के अंत के साथ, सभी स्थानीय * चर * चले गए हैं। यदि डेटा स्मृति में (अस्थायी रूप से) रहता है या नहीं, तो यह महत्व का नहीं है। लेकिन यह जानने के लिए कि आपको स्मृति प्रबंधन के बारे में कुछ और जानने की जरूरत है जो मुझे लगता है कि आपकी ताकत नहीं है (कृपया कोई अपराध नहीं है)।सिस्टम से मेमोरी ब्लॉक को तुरंत आवंटित करना बहुत महंगा होगा, केवल इसलिए कि स्थानीय चर का उपयोग अब और नहीं किया जाता है। – hakre