реклама на сайте
подробности

 
 
> Завершение потока в pthreads, Не освобождается память
Quasar
сообщение Sep 11 2012, 10:00
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 257
Регистрация: 2-12-06
Из: Default City
Пользователь №: 23 021



Есть приложение, использующее pthread, по ходу выполнения приложения создаются новые потоки, выполнив свою работу они завершаются, делая просто return NULL. Я решил посмотреть, сколько памяти использует мое приложение cat /tmp/PID/status и чего-то не понял:


Код
Name:   app
State:  S (sleeping)
Tgid:   12718
Pid:    12718
PPid:   1
TracerPid:      0
Uid:    0       0       0       0
Gid:    0       0       0       0
FDSize: 32
Groups:
VmPeak:    93568 kB
VmSize:    93568 kB
VmLck:         0 kB
VmHWM:      1184 kB
VmRSS:      1184 kB
VmData:    90304 kB
VmStk:       136 kB
VmExe:       136 kB
VmLib:      2796 kB
VmPTE:        32 kB
VmSwap:        0 kB
Threads:        10



VmData с запуском нового потока только растет, и не уменьшается по его завершению, я так понимаю, что память выделенная под стек не освобождается. Это нормально или я неверно интерпретирую полученные данные?

Плата вот эта.

Код
uname -a
Linux buildroot 2.6.36-rc6 #732 Wed Jun 29 06:03:40 EDT 2011 armv5tejl GNU/Linux



Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
andron86
сообщение Sep 11 2012, 15:21
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 406
Регистрация: 1-03-06
Пользователь №: 14 821



Цитата(Quasar @ Sep 11 2012, 12:00) *
Есть приложение, использующее pthread, по ходу выполнения приложения создаются новые потоки, выполнив свою работу они завершаются, делая просто return NULL.

А завершаете их правильно?
Go to the top of the page
 
+Quote Post
Quasar
сообщение Sep 11 2012, 16:15
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 257
Регистрация: 2-12-06
Из: Default City
Пользователь №: 23 021



Цитата(andron86 @ Sep 11 2012, 19:21) *
А завершаете их правильно?

Собственно так и завершаю:
Код
static void *rx_thread ( void *ptr ) {
    .
    .
    .
    return NULL;
}


Можно делать pthread_exit(), но я разницы не заметил.
Да, я поглядел /proc/meminfo, свободная память вроде не уменьшается, то есть все таки нормально освобождается все, но мне не ясно, а что же это тогда за виртуальная память и почему она только растет?
Код
cat /proc/meminfo
MemTotal:          60568 kB
MemFree:           40236 kB
Buffers:              16 kB
Cached:             9920 kB
SwapCached:            0 kB
Active:             8132 kB
Inactive:           2952 kB
Active(anon):       1148 kB
Inactive(anon):       12 kB
Active(file):       6984 kB
Inactive(file):     2940 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 8 kB
Writeback:             0 kB
AnonPages:          1164 kB
Mapped:             1816 kB
Shmem:                12 kB
Slab:               4640 kB
SReclaimable:       2200 kB
SUnreclaim:         2440 kB
KernelStack:         400 kB
PageTables:          280 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:       30284 kB
Committed_AS:     184108 kB
VmallocTotal:     956416 kB
VmallocUsed:      266276 kB
VmallocChunk:     686076 kB
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 14th August 2025 - 23:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.03679 секунд с 7
ELECTRONIX ©2004-2016