![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| DooZ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 25.11.2005 Репутация: нет Всего: 1 |
Здравствуйте,
файл 87 метров, в памяти загружается и сжирает по top 3.9% (памяти 4 гига), после очистки внизу, остается висеть 3.7% если в массив @templates не записывать ничего то висит процесс с 0.3% памяти вопрос, почему не очищается память? ОСь: linux fedora 11 64x Perl: 10.0.1 уже мозг закипает заранее спасибо |
|||
|
||||
| DooZ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 25.11.2005 Репутация: нет Всего: 1 |
короче проблема не решаемая... это баг или фича перла не знаю
в мануалах вообще написано, что если Вам надо очищать память (контролировать), юзайте Си вообщем решил задачу банальным форком, где делается что надо, что требует память, и потом убивается этот чилд... по другому никак P.S. в 5.12 перле, который только вышел, этот "глюк" с очисткой, так же остался... |
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
вы можете управлять памятью через вызоб brk (man 2 brk)
|
|||
|
||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 22 Всего: 39 |
А как это сделать из perl? |
|||
|
||||
| shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
DooZ, да память мы уже исследовали, что она резервируется perl под себя и назад отдаваться не хочет
|
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
perldoc -f syscall
|
|||
|
||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 22 Всего: 39 |
А что передать brk() в качестве параметра?
|
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
man 2 brk
|
|||
|
||||
| DooZ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 25.11.2005 Репутация: нет Всего: 1 |
man 2 brk int brk(void *addr); 2arto Вы в теории только знаете что это "нужно" сделать? или есть реальный опыт юзания очистки памяти с помощью brk именно в PERL ? если есть, и если не затруднит, напишите пожалуйста рабочий пример... Добавлено через 2 минуты и 11 секунд если поставить так: syscall(&SYS_brk, "@templates", length "@templates"); то все работает, имеется ввиду не вылетает но памяти начинает жрать уже 8.4% кто-нить подскажите как быть-то... |
|||
|
||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 22 Всего: 39 |
Ну так точно неправильно. В документации к этой функции сказано что нужно передать 1 параметр, указатель типа void. Но на что именно этот указатель, а тем более как его получить в perl совершенно не ясно. Может уважаемый arto всё же объяснит как правильно пользоваться brk(void *end_data_segment)? |
|||
|
||||
| DooZ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 25.11.2005 Репутация: нет Всего: 1 |
щас perl перекомпилирую с malloc ОСи, а не его собственного, по результатам отпишусь
Добавлено через 14 минут и 30 секунд чет все равно не помогло... |
|||
|
||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 22 Всего: 39 |
DooZ, это malloc ОС или перловый? |
|||
|
||||
| DooZ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 25.11.2005 Репутация: нет Всего: 1 |
если стоит usemymalloc='n'; значит перл юзает свой malloc
я щас проверял при своем malloc при очистке того же undef @templates память первоначально жралось 3.9%, после undef 3.7% стало, т.е. он что-то очищает, но не понятно почему не все когда я скомпилил без перлового malloc тобишь будет usemymalloc='y' при загрузке тогоже файла в @templates Он жрал уже 4.4% НО при undef @templates память так же оставалась 4.4% вот и хз как его чистить... |
|||
|
||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 22 Всего: 39 |
В perldoc -q "program shrinks" примерно так и пишут, хотите почистить память - завершите процесс программы
|
|||
|
||||
| DooZ |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 25.11.2005 Репутация: нет Всего: 1 |
нашел тут скрипт
тут все очищается... изучаю Добавлено через 2 минуты и 33 секунды нашел "причину" почему в скрипте все очищается там файл создавался коммандой: dd if=/dev/zero of=zero.dat bs=8192 count=131072 т.е. он пустой... но если в файле будут строки (текст), то хрен что очищается Добавлено через 4 минуты и 49 секунд а вот так файл со строками очищается
теперь вообще ничего не понятно массивы он чистить не хочет, переменные запросто но как работать-то без массивов? |
||||
|
|||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |