glibc의 malloc 구현은 응용 프로그램이 사용되지 않는 (즉, 해제 된 메모리 청크) 시스템을 다시 릴리스 할 수 있도록하는 malloc_trim() 호출을 지원합니다 (구현 세부 사항 : 음수 인수로 sbrk()를 호출하면 프로그램의 데이터 세그먼트가 축소됨)). 그러나이 기능은 주요 영역에서만 작동합니다. 다중 스레드 프로그램에서 해제 된 청크를 유지하는 여러 영역이 있습니다. 이 호출이 다른 경기장에서도 메모리를 해제하지 않는 이유는 무엇입니까?malloc_trim()이 주 영역에서만 작동하는 이유는 무엇입니까?
답변
메인 이외의 아레나는 mmap
을 사용하여 시스템에서 할당되므로 sbrk
을 사용하여 시스템에 메모리를 반환 할 수 없습니다. glibc가 mremap
을 사용하여 이러한 다른 영역을 축소 할 수 있습니다. 또한 malloc_trim
은 경기장 끝에서 메모리 만 반환 할 수 있습니다. 경기장 중간에 빈 블록이 있으면 해당 메모리를 해제 할 방법이 없습니다.
Geoff, 답장을 보내 주셔서 감사합니다. 나는 이것을 glibc 코드에서 연구 중이며,이 질문을 내가 찾은 것에 대한 대답으로 업데이트 할 것이다. – Specksynder
Geoff, 감사합니다. 당신의 대답은 정확합니다. 'sbrk'는 프로그램의 데이터 세그먼트 만 줄이기 위해 사용할 수 있으므로 malloc_trim은 거기에있는 주요 영역에서만 작동합니다. – Specksynder
- 1. 테스트가 작동하는 이유는 무엇입니까?
- 2. instanceof가 작동하는 이유는 무엇입니까?
- 3. MVC 응용 프로그램의 한 영역에서만 작동하는 사용자 정의 모델 바인더
- 4. 주 스레드에서 작동하는 메서드 호출
- 5. /MANIFESTUAC : NO가 작동하는 이유는 무엇입니까?
- 6. ViewHolder 패턴이 작동하는 이유는 무엇입니까?
- 7. 자바에서 + 문자열이 작동하는 이유는 무엇입니까?
- 8. 이 JavaScript가 작동하는 이유는 무엇입니까?
- 9. 이미지가 다운로드로 작동하는 이유는 무엇입니까?
- 10. Winforms.Button.Text가 ImageBind가 아닌 DataBinding에서 작동하는 이유는 무엇입니까?
- 11. 내 UIView 애니메이션이 다르게 작동하는 이유는 무엇입니까?
- 12. UIButton은 작은 영역에서만 응답합니다.
- 13. 특정 영역에서만 불투명도
- 14. JQuery에서 지정된 영역에서만 클래스를 변경하는 방법은 무엇입니까?
- 15. IE9에서는 작동하지 않지만 Firefox에서는 작동하는 이유는 무엇입니까?
- 16. PHP의 ++ 연산자가 객체 속성에서 작동하는 이유는 무엇입니까?
- 17. jquery first child가 ie6에서 작동하는 이유는 무엇입니까?
- 18. 매끄러운 scrollBy가 처음으로 작동하는 이유는 무엇입니까?
- 19. getFile의이 인스턴스가 SVNKit에서 작동하는 이유는 무엇입니까?
- 20. 이 TopCoder prob에서이 코드가 작동하는 이유는 무엇입니까?
- 21. CSS에서 작동하는 꼬리말을 만들 수없는 이유는 무엇입니까?
- 22. 이 경우 이벤트가 다르게 작동하는 이유는 무엇입니까?
- 23. 음수 인덱스가있는 배열이 작동하는 이유는 무엇입니까?
- 24. Entity Framework 응용 프로그램이 작동하는 이유는 무엇입니까?
- 25. char에서 int 캐스팅이 작동하는 이유는 무엇입니까?
- 26. evaluateJavaScript가 한 번만 작동하는 이유는 무엇입니까?
- 27. jquery fadein이 한 번만 작동하는 이유는 무엇입니까?
- 28. mv가이 bash 스크립트에서 작동하는 이유는 무엇입니까?
- 29. 동적으로로드하는 어셈블리 :이 코드가 작동하는 이유는 무엇입니까?
- 30. #include "stdio.h"가 작동하는 이유는 무엇입니까?
아마도 할당 된 것보다 다른 영역에서 메모리를 비우는 것이 좋지 않기 때문에 ... 힙 상단의 메모리 만 비울 수 있습니다. – AJG85