3
如何減少C中線程所使用的內存?雖然一個線程需要大約8到10 MB的內存,但是有什麼辦法可以減少這個內存嗎?c中線程的內存分配
如何減少C中線程所使用的內存?雖然一個線程需要大約8到10 MB的內存,但是有什麼辦法可以減少這個內存嗎?c中線程的內存分配
是的,你可以設置線程堆棧的大小。
pthread_attr_t attribute;
pthread_t thread;
pthread_attr_init(&attribute);
pthread_attr_setstacksize(&attribute,size); // size may be defined by u as 1024,2048,etc
pthread_create(&thread,&attribute,fun,0);
............................................ .....
void *fun(void *arg)
{
....
}
正如已經回覆的,您可以在您的應用程序中使用pthread屬性。
但你也可以設置限制在當前shell啓動與ulimit命令的任何應用程序:
ulimit -s
:顯示在昆明植物研究所ulimit -s 1024
:限制堆棧1 MIB
如果你理性地思考這個問題,它不應該成爲一個問題。你的CPU有多少核心?您嘗試啓動多少個線程?如果您嘗試啓動2000個線程,則內存不會是您所面對的唯一問題。 – Sebivor 2013-04-25 11:25:16
需要考慮的另一件事是,在大多數系統中,堆棧是按照一定的頁面大小(通常在4Kb左右)進行分配並自動增長的。即使你的線程庫爲堆棧分配了X數量的MB,也並不意味着它們實際上正在被使用。作爲一個實驗:編寫一個程序,分配所有可用的物理RAM然後休眠。運行它並檢查它是實際使用的內存(RSS,Resident Set)。 – 2013-04-25 13:08:31