![]() |
Модераторы: powerfox, ZeeLax |
![]() ![]() ![]() |
|
Logo |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 694 Регистрация: 22.7.2008 Репутация: нет Всего: 10 |
Процесс сначала отжирает память, а потом освобождает ее. Linux использует освободившуюся память, и когда это происходит?
Как вручную освободить память, выделенную процессу? (после того как он ее высвободил) |
|||
|
||||
bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 113 Всего: 317 |
грубо говоря это предложение заменить таймер в двигателе внутреннего сгорания, "чтобы вручную зажигать свечи".
-------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
Logo |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 694 Регистрация: 22.7.2008 Репутация: нет Всего: 10 |
Ок, делаю приложение использующее браузерный движок (rekonq). Сначала использовал много памяти html элементами/javascript переменными, потом, возможно, стоит ее очистить. Как мне посмотреть, сколько памяти он вернет системе?
|
|||
|
||||
bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 113 Всего: 317 |
это тебя не должно волновать.
на уровне приложения ты должен аллоцировать память когда она тебе нужна, и освобождать когда уже не нужна. (т.е. использовать динамическую аллокацию) а это знает точно код, который ты написал. если ты сделал на что-то malloc(), то после использования надо сделать free() т.к. в вопросе мало конкретики, ответ расплывчат. -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
Logo |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 694 Регистрация: 22.7.2008 Репутация: нет Всего: 10 |
Так я же пишу код не на C(++), а JavaScript.
Мне не известно, умеет ли reqonk возвращать память системе и насколько эффективно он это делает. По этому я не знаю, нужно ли вообще освобождать память, или он освободит совсем немного. Добавлено через 39 секунд Веб приложение, по сути |
|||
|
||||
bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 113 Всего: 317 |
Logo, или я не понял, или ты пишешь веб приложение на джава скрипте,
и тебе не нравится как быстро движок javascript браузера освобождает память системе ? Если ситуация такова, то тебе нечего делать. потому что чинить движок джаваскрипта тебе придется для всех браузеров. Допустим ты сосредоточишься на том, что есть (В WebKit это V8) Tебе надо принять тот факт, что в общем такие движки как V8 рассчитаны на скорость обработки кода, а не на экономию максимального количества памяти. Код, который решает освобождать память за ненадобностью тоже занимает какое-то время. Это очень тонкое и деликатное дело, ведь джаваскрипт - язык динамически типизованный, прототипный. Сам процесс превращения текста в оперативный код виртуальной машины, которая прогоняет уже программу - очень емкий по памяти. нужно все считать как можно быстрее, независимые куски преобразовать параллельно, потом все это "склеить", и именно этот процесс поедает огромное количество памяти, создавая пик занятой памяти процессу. Кроме того этот кусок памяти после склейки не всегда можно разделить и освободить куски: ведь это программа, нередко большая. Напр. библиотека типа jQuery. пол меги в тексте выливаются в намного больше в исполняемой форме. Потом, весь код в памяти виртуальной машины сидит и ждет когда же пройдет довольно много времени, и часть этой памяти можно освободить. Если это недостаточно быстро, то уж увольте, присоединитесь к проекту, и помогайте оптимизировать (если кишка не тонка). Думаю, что прагматичнее посмотреть на код движка и ознакомиться с механизмами освобождения ("garbage collection"), и на основе этих знаний как-то "жить": либо намекать движку (если это возможно), пояснее что можно освободить сразу, либо просто смириться. удачи. -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
Logo |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 694 Регистрация: 22.7.2008 Репутация: нет Всего: 10 |
Мда, запустил простейшую программу
В моей системе память сразу освобождается. Примерно тоже самое на javascript (с дивами) не освобождает память вообще, ждал около получаса.
Мне бы знать он вообще ее умеет освобождать, или нет (и желательно, сколько, всю которую занял, или нет). Мне вообще нужно высвобождать память системе в JS, или в этом смысла нет. Скорость высвобождения памяти меня не столь волнует, понятно, что из JS тут ни чего не поделаешь, сколько сама способность ее высвобождать. |
||||
|
|||||
ChihPih |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 532 Регистрация: 3.12.2006 Репутация: 13 Всего: 22 |
А чего такого то? Памяти очень мало, в своп все кладется?
Вам уже ответили на вопрос почему память может не освобождаться, перечитайте. ![]() |
|||
|
||||
Logo |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 694 Регистрация: 22.7.2008 Репутация: нет Всего: 10 |
Ясно, в принципе с освобождением памяти можно не заморачиватся.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Linux/UNIX: Oбщие вопросы" | |
|
В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу). В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим. Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |