Модераторы: powerfox, ZeeLax
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Освободить память, занимаемую процессом 
:(
    Опции темы
Logo
Дата 14.5.2012, 02:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Процесс сначала отжирает память, а потом освобождает ее. Linux использует освободившуюся память, и когда это происходит?
Как вручную освободить память, выделенную процессу? (после того как он ее высвободил)
PM MAIL   Вверх
bilbobagginz
Дата 14.5.2012, 07:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


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

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



грубо говоря это предложение заменить таймер в двигателе внутреннего сгорания, "чтобы вручную зажигать свечи".




--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Logo
Дата 14.5.2012, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ок, делаю приложение использующее браузерный движок (rekonq). Сначала использовал много памяти html элементами/javascript переменными, потом, возможно, стоит ее очистить. Как мне посмотреть, сколько памяти он вернет системе?
PM MAIL   Вверх
bilbobagginz
Дата 14.5.2012, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


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

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



это тебя не должно волновать.
на уровне приложения ты должен аллоцировать память когда она тебе нужна, и освобождать когда уже не нужна.
(т.е. использовать динамическую аллокацию)
а это знает точно код, который ты написал.
если ты сделал на что-то malloc(), то после использования надо сделать free()
т.к. в вопросе мало конкретики, ответ расплывчат.





--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Logo
Дата 14.5.2012, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Так я же пишу код не на C(++), а JavaScript.
Мне не известно, умеет ли reqonk возвращать память системе и насколько эффективно он это делает. По этому я не знаю, нужно ли вообще освобождать память, или он освободит совсем немного.

Добавлено через 39 секунд
Веб приложение, по сути
PM MAIL   Вверх
bilbobagginz
Дата 15.5.2012, 06:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


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

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



Logo, или я не понял, или ты пишешь веб приложение на джава скрипте, 
и тебе не нравится как быстро движок javascript браузера освобождает память системе ?
Если ситуация такова, то тебе нечего делать.
потому что чинить движок джаваскрипта тебе придется для всех браузеров.
Допустим ты сосредоточишься на том, что есть (В WebKit это V8)
Tебе надо принять тот факт, что в общем такие движки как V8 рассчитаны на скорость обработки кода, 
а не на экономию максимального количества памяти. 

Код, который решает освобождать память за ненадобностью тоже занимает какое-то время.
Это очень тонкое и деликатное дело, ведь джаваскрипт - язык динамически типизованный, прототипный.

Сам процесс превращения текста в оперативный код виртуальной машины, которая прогоняет уже программу - очень емкий по памяти.
нужно все считать как можно быстрее, независимые куски преобразовать параллельно, потом все это "склеить", и именно этот процесс поедает огромное количество памяти, создавая пик занятой памяти процессу.
Кроме того этот кусок памяти после склейки не всегда можно разделить и освободить куски: ведь это программа, нередко большая.
Напр. библиотека типа jQuery. пол меги в тексте выливаются в намного больше в исполняемой форме.

Потом, весь код в памяти виртуальной машины сидит и ждет когда же пройдет довольно много времени, и часть этой памяти можно освободить.
Если это недостаточно быстро, то уж увольте, присоединитесь к проекту, и помогайте оптимизировать (если кишка не тонка).

Думаю, что прагматичнее посмотреть на код движка и ознакомиться с механизмами освобождения ("garbage collection"), 
и на основе этих знаний как-то "жить": либо намекать движку (если это возможно), пояснее что можно освободить сразу, либо просто смириться.

удачи.




--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Logo
Дата 15.5.2012, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Мда, запустил простейшую программу
Код

#include <iostream>
using namespace std;


int main() {
  unsigned long bytes = 100*1024*1024;
  char* mem = new char[bytes];
  for(int i = 0; i < bytes; i++) {
      mem[i] = i;
  }
  cout << "malloc";
  
  
  cin.get();
  delete[] mem;
  cout << "free";
  
  cin.get();
  cout << "exit";
}

В моей системе память сразу освобождается.

Примерно тоже самое на javascript (с дивами) не освобождает память вообще, ждал около получаса.

Цитата

Logo, или я не понял, или ты пишешь веб приложение на джава скрипте, 
и тебе не нравится как быстро движок javascript браузера освобождает память системе ?

Мне бы знать он вообще ее умеет освобождать, или нет (и желательно, сколько, всю которую занял, или нет). Мне вообще нужно высвобождать память системе в JS, или в этом смысла нет.
Скорость высвобождения памяти меня не столь волнует, понятно, что из JS тут ни чего не поделаешь, сколько сама способность ее высвобождать.
PM MAIL   Вверх
ChihPih
Дата 15.5.2012, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А чего такого то? Памяти очень мало, в своп все кладется?
Вам уже ответили на вопрос почему память может не освобождаться, перечитайте. smile


--------------------
www.info-x.org - информационный ресурс о ОС FreeBSD. Форум.
PM MAIL WWW Jabber   Вверх
Logo
Дата 16.5.2012, 01:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ясно, в принципе с освобождением памяти можно не заморачиватся.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
nerezus

В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
Например вопросы о выборе ОС для определенных задач (но если Вы просто хотите узнать "Какой дистрибутив лучше", то для этого есть Клуб юнуксоидов).
Общие вопросы по shell-программированию тоже лучше задавать здесь.


  • Вопросы мобильной разработки тут
  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

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


 




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


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

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