기술나눔

Android에서 스레드 스택은 얼마나 큽니까? 어디에 설정되어 있나요?

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Android에서 스레드의 스택 크기는 다양한 Android 버전과 스레드 유형(예: 기본 스레드와 하위 스레드)에 따라 달라질 수 있습니다. 다음은 Android의 스레드 스택 크기와 설정 방법에 대한 자세한 답변입니다.

스레드 스택 크기

  1. 메인 스레드 스택 크기
    • 기본적으로 Android 메인 스레드의 스택 크기는 일반적으로8MB . 시스템이 메인 스레드에 할당한 초기 스택 공간으로, 프로세스를 호출하는 메서드, 지역 변수, 피연산자 스택 등의 정보를 저장하는 데 사용됩니다.
  2. 하위 스레드 스택 크기
    • 하위 스레드의 스택 크기는 상대적으로 작으며 구체적인 크기는 Android 버전에 따라 다릅니다.예를 들어 Android 6.0/7.0에서 하위 스레드(GUARD 영역 포함)의 스택 크기는 대략 다음과 같습니다.1016KB;Android 8.0에서 하위 스레드(GUARD 영역 포함)의 스택 크기는 대략1008KB; Android 9.0 이상에서 하위 스레드의 스택 크기(GUARD 영역 제외)는 대략 다음과 같습니다.1008KB, 그러나 mmap(STACK 및 GUARD 포함)에 의해 할당된 전체 크기는 다음과 같습니다.1012KB또는1016KB

스레드 스택 크기 설정

Android에서는 POSIX 스레드(pthread) 라이브러리의 관련 함수를 호출하여 스레드의 스택 크기를 설정할 수 있습니다. Android의 기본 메커니즘 중 다수가 이러한 언어를 기반으로 하기 때문에 이러한 함수는 일반적으로 C 또는 C 코드에서 사용됩니다.

  1. 스레드 스택 크기를 설정하는 기능
    • pthread_attr_setstacksize(pthread_attr_t *attr, size_t stacksize): 이 함수는 스레드 속성 개체를 설정하는 데 사용됩니다.attr스택 크기stacksize
    • 사용pthread_create스레드를 생성하기 전에 다음을 호출해야 합니다.pthread_attr_init스레드 속성 개체를 초기화한 다음 사용합니다.pthread_attr_setstacksize스택 크기를 설정하고 마지막으로 set 속성 개체를 사용하여 스레드를 생성합니다.
  2. 샘플 코드
     

    c

    #include