Partage de technologie

Quelle est la taille de la pile d’un thread sous Android ? Où est-il placé ?

2024-07-11

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

Sous Android, la taille de la pile d'un thread peut varier en fonction des différentes versions d'Android et des types de thread (tels que le thread principal et le thread enfant). Ce qui suit est une réponse détaillée à la taille d'une pile de threads dans Android et à la manière de la définir :

Taille de la pile de threads

  1. Taille de la pile de threads principaux
    • Par défaut, la taille de la pile du thread principal Android est généralement8 Mo . Il s'agit de l'espace de pile initial alloué par le système au thread principal, qui est utilisé pour stocker des informations telles que le processus d'appel de méthode, les variables locales et les piles d'opérandes.
  2. Taille de la pile de threads enfants
    • La taille de la pile du thread enfant est relativement petite et la taille spécifique dépend de la version d'Android.Par exemple, sous Android 6.0/7.0, la taille de la pile d'un thread enfant (y compris la zone GUARD) est d'environ1016 Ko;Dans Android 8.0, la taille de la pile du thread enfant (y compris la zone GUARD) est d'environ1008 Ko; Sous Android 9.0 et versions ultérieures, la taille de la pile du thread enfant (à l'exclusion de la zone GUARD) est d'environ1008 Ko, mais la taille totale allouée par mmap (y compris STACK et GUARD) est1012 Koou1016 Ko

Définir la taille de la pile de threads

Sous Android, vous pouvez définir la taille de la pile du thread en appelant les fonctions pertinentes de la bibliothèque de threads POSIX (pthread). Ces fonctions sont généralement utilisées dans le code C ou C, car de nombreux mécanismes sous-jacents d'Android sont basés sur ces langages.

  1. Fonction pour définir la taille de la pile de threads
    • pthread_attr_setstacksize(pthread_attr_t *attr, size_t stacksize): Cette fonction est utilisée pour définir l'objet d'attribut de threadattrtaille de la pile enstacksize
    • Utilisépthread_createAvant de créer un fil de discussion, vous devez appelerpthread_attr_initInitialisez l'objet de propriétés du fil, puis utilisezpthread_attr_setstacksizeDéfinissez la taille de la pile et enfin créez un thread à l'aide de l'objet de propriété set.
  2. Exemple de code
     

    c

    #include