Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Функции и выделение памяти 
:(
    Опции темы
PROme2
Дата 10.10.2006, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 4.1.2006

Репутация: нет
Всего: нет



подскажите, плиз, как в php устроено, освобождается ли память, выделенная под переменные функции, после завершения ее работы или она висит до завершения работы скрипта? smile 
PM MAIL   Вверх
smartov
Дата 10.10.2006, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 7
Всего: 259



Висит до конца скрипта если только unset на переменку не сделаешь или другое значение в нее не впихнешь.
PM MAIL   Вверх
PROme2
Дата 10.10.2006, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 4.1.2006

Репутация: нет
Всего: нет



smartov, спасибо, ясно... smile
ЗЫ: по поводу unset-а, насколько я понимаю, он память не освобождает, только обнуляет переменную... smile 
PM MAIL   Вверх
smartov
Дата 10.10.2006, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 7
Всего: 259



Цитата(PROme2 @  10.10.2006,  14:30 Найти цитируемый пост)
насколько я понимаю, он память не освобождает, только обнуляет переменную

Цитата

For the curious: unset also frees memory of the variable used.
>
>It might be possible that the in-memory size of the PHP Interpreter isn't reduced, but your scripts won't touch the memory_limit boundary. Memory is reused if you declare new variables.

http://php.paco.net/manual/en/function.unset.php


Что значит
Цитата

unset также освобождает память.

Возможно вы увидите что память занимаемая php-интерпретатором не уменьшилась после unset, но это ничего, ваши скрипты не достигнут предела памяти. Память будет использована заново если вы провозгласите новые переменные.


Добавлено @ 17:47 
Но товарищи там-же в комментах говорят что unset в силу неясных причин работает не всегда, зато у них хорошо работало
Код

$var = NULL;


Говорит что у него такие результаты
Using destroy() and unset() ->  ~31kb
Using $dialog = NULL -> ~13 kb



Цитата

I saw this mentioned somewhere else but if you do

$var = NULL

then I've noticed less memory usuage than with unset(). In fact, unset didn't do anything.

This might be useful if you're doing a php-gtk app, thats starting to consume significant memory over a long period of time. This was the code I used to test

// Check memory before here

for($i = 0; $i < 100; $i++)
{
  $dialog = &new GtkDialog();
  $dialog->realize();
  $dialog->destroy();

  $dialog = NULL;
  //unset($dialog);
}

// Check memory after here

Doing a difference between after and before results in:

Using destroy() and unset() ->  ~31kb
Using $dialog = NULL -> ~13 kb

The expected memory usuage should be 0kb or around there.


Так что пробуй smile Думаю от версии php тоже очень зависит
PM MAIL   Вверх
PROme2
Дата 10.10.2006, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 4.1.2006

Репутация: нет
Всего: нет



smartov, спасибо за пояснения smile
мне это, тьфу-тьфу-тьфу, не нужно, просто у одного чела были проблемы со скриптом, уже оптимизировали, просто стало интересно по поводу функций... странно все же что они так сделали, я все понимаю, но уж для функций можно было бы и освобождать память поисле их работы
PM MAIL   Вверх
Mal Hack
Дата 11.10.2006, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(PROme2 @  11.10.2006,  00:14 Найти цитируемый пост)
странно все же что они так сделали, я все понимаю, но уж для функций можно было бы и освобождать память поисле их работы 

Ничего странного... Функция не просто так, как переменная в памяти хранится... Там все намного сложнее. Связи же есть, контролы управления и т.п.

Добавлено @ 09:25 
В догонку: http://ru.php.net/runkit
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0793 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.