Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Тексты > php - освобождение памяти |
Автор: kZaido 28.4.2006, 22:52 |
Мой скрипт работает с текстом(строками), много работает, и получается , что он накапливает и накапливает используемую память. Как средствами php или чего либо другого освобождать ненужную память не во вред скрипту? Везде понаставил unset() , неужели нету других вариантов?? очень очень жду мнений ![]() |
Автор: Mal Hack 28.4.2006, 23:34 |
В PHP нет понятия динамической памяти, посему придется решать задачу разбиением на более мелкие или оптимизацией алгоритма. |
Автор: kZaido 28.4.2006, 23:46 |
а как объясняется эта штука теорией? всевремя скрипт работает с разными строками, но для каждой стабильно есть unset. Почему память не занимается другими переменными? Почему не освобождается? Может есть какая-то системная утилита которой можно освободить память(допустим под никсы)... Просто скрипт занимает и гигабайт оперативы. если ему повезет ![]() |
Автор: kZaido 29.4.2006, 00:01 |
да, про ограничение я знаю, оно конечно же работает, я говорю в целом.... т.е. основной метасмысл послания - если переменная созданна один раз, то ее место нельзя будет занимать до конца выполнения скрипта(или как вообще?) . Т.е. чем больше переменных тем больше места и т.п. ??? А когда освободится память которую занимает скрипт??? |
Автор: Mal Hack 29.4.2006, 00:28 | ||
Да. Это также как и при использовании статических переменных в любом другом языке. Объем памяти можно изменять лишь используя ДП, с укзателями. Если быть точным, то при завершении работы процесса веб-сервера, который контролирует скрипт. |
Автор: AztEK 29.4.2006, 09:12 |
Если скрипт достаточно большой, можно оптимизировать и так: http://argon.com.ru/internet/webmastering/phpoptim Ещё видел http://codenet.ru/webmast/php/Shared-Memory.php. Правда, не разобрался я в этой штуке :/ Ещё можно перевести скрипт на ООП... |
Автор: kZaido 29.4.2006, 13:33 |
да он на ооп, используется несколько классов, композиция классов. большие переменные не передаются функциям, а берутся из общих переменных класса, это сделано для экономии памяти(ну я так думаю. что это ее экономит)... |
Автор: Replicator 1.5.2006, 13:40 |
РНР такой язык, что тебе нет нужды думать об указателях и использовании памяти. Если ты используешь unset, то ты освободил память и тебя не должно волновать, кто, что и как будет ее использовать потом. Система сама разберется и не нужно ей помогать. В этом смысл языков высокого уровня. |
Автор: Wowa 1.5.2006, 14:12 |
kZaido, а если ты не будешь создавать новые переменные, а будешь заменять значение текущих? |
Автор: S.A.P. 1.5.2006, 14:29 |
kZaido, а можно скрипт в студию? По идее, в PHP память под переменную должна освобождаться, как только она "уходит из виду", т.е теряются все ссылки к ней. Думаю от сюда и надо отталкиваться. |