어떻게하면 C에서 쓰레드가 사용하는 메모리를 줄일 수 있습니까? 스레드가 약 8 ~ 10MB의 메모리를 사용하지만이 메모리를 줄이는 방법이 있습니까?C의 쓰레드에 의한 메모리 할당
3
A
답변
6
예 스레드 스택의 크기를 설정할 수 있습니다.
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)
{
....
}
2
이미 답변 했으므로 응용 프로그램에서 pthread 속성을 사용할 수 있습니다.
그러나 당신은 또한 ulimit 명령으로 현재 쉘에서 실행 된 모든 응용 프로그램에 대한 제한을 설정할 수 있습니다
ulimit -s
을 : MiB 크기 를 1로 스택을 제한 :
ulimit -s 1024
키브 의 전류 제한을 보여
관련 문제
- 1. zalloc에 의한 메모리 할당
- 2. STL C++ 객체에 의한 메모리 할당
- 3. C의 일반 포인터 및 메모리 할당
- 4. 메모리 할당 ** p
- 5. 생성자 - 메모리 할당
- 6. std :: map의 메모리 할당
- 7. C의 파일 설명자 할당
- 8. 멀티 쓰레드에 의한 C++의 쓰레드 안전 쓰레드
- 9. aspnet_wp.exe에 의한 메모리 사용
- 10. 할당 = 및 빼기 할당 - = C의 원자 연산입니까?
- 11. C의 메모리 위치 액세스
- 12. 객관적인 c의 메모리 문제
- 13. C의 메모리 오류
- 14. 목표 - C의 메모리 누수가
- 15. C의 스택 메모리 레이아웃
- 16. 메모리 할당
- 17. 메모리 할당
- 18. 메모리 할당
- 19. 메모리 할당
- 20. 할당 메모리
- 21. 메모리 할당
- 22. 할당 메모리
- 23. 메모리 할당
- 24. 메모리 할당
- 25. 메모리 할당
- 26. 메모리 할당
- 27. 데이터 세그먼트에 의한 스택 할당 및 처리
- 28. 메모리 할당 문제
- 29. 참조/복사본에 의한 문자열 할당?
- 30. ASP.NET 할당 확인란에 의한 역할
합리적으로 생각하면 문제가되지 않습니다. CPU에는 몇 개의 코어가 있습니까? 얼마나 많은 스레드를 시작하려고합니까? 2000 개의 스레드를 시작하려는 경우 메모리 만 있으면 문제가 발생하지 않습니다. – Sebivor
고려해야 할 또 다른 사항은 대부분의 시스템에서 스택은 페이지 덩어리 (대개 약 4KB)에 한 번에 하나씩 할당되어 자동으로 커집니다. 스레드 라이브러리가 스택에 X 양의 MB를 할당한다고해도 실제 물리적으로 사용되고 있음을 의미하지는 않습니다. 실험으로 : 사용 가능한 실제 RAM을 모두 할당 한 다음 잠자기하는 프로그램을 작성하십시오. 그것을 실행하고 실제 사용 된 메모리 (RSS, 주민 설정)를 확인하십시오. –