Κοινή χρήση τεχνολογίας

Πόσο μεγάλη είναι η στοίβα ενός νήματος στο Android; Πού έχει ρυθμιστεί;

2024-07-11

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

Στο Android, το μέγεθος στοίβας ενός νήματος μπορεί να ποικίλλει ανάλογα με τις διαφορετικές εκδόσεις Android και τους τύπους νημάτων (όπως το κύριο νήμα έναντι του θυγατρικού νήματος). Ακολουθεί μια λεπτομερής απάντηση στο μέγεθος μιας στοίβας νημάτων στο Android και πώς να το ορίσετε:

Μέγεθος στοίβας νημάτων

  1. Μέγεθος στοίβας κύριου νήματος
    • Από προεπιλογή, το μέγεθος στοίβας του κύριου νήματος Android είναι συνήθως8 MB . Αυτός είναι ο αρχικός χώρος στοίβας που εκχωρείται από το σύστημα στο κύριο νήμα, το οποίο χρησιμοποιείται για την αποθήκευση πληροφοριών όπως η διαδικασία κλήσης της μεθόδου, οι τοπικές μεταβλητές και οι στοίβες τελεστών.
  2. Μέγεθος στοίβας παιδικού νήματος
    • Το μέγεθος στοίβας του θυγατρικού νήματος είναι σχετικά μικρό και το συγκεκριμένο μέγεθος εξαρτάται από την έκδοση Android.Για παράδειγμα, στο Android 6.0/7.0, το μέγεθος στοίβας ενός θυγατρικού νήματος (συμπεριλαμβανομένης της περιοχής GUARD) είναι περίπου1016 KB;Στο Android 8.0, το μέγεθος στοίβας του θυγατρικού νήματος (συμπεριλαμβανομένης της περιοχής GUARD) είναι περίπου1008 KBΣτο Android 9.0 και σε νεότερη έκδοση, το μέγεθος στοίβας του θυγατρικού νήματος (εξαιρουμένης της περιοχής GUARD) είναι κατά προσέγγιση.1008 KB, αλλά το συνολικό μέγεθος που εκχωρείται από το mmap (συμπεριλαμβανομένων των STACK και GUARD) είναι1012 KBή1016 KB

Ορισμός μεγέθους στοίβας νημάτων

Στο Android, μπορείτε να ορίσετε το μέγεθος στοίβας του νήματος καλώντας τις σχετικές λειτουργίες της βιβλιοθήκης νημάτων POSIX (pthread). Αυτές οι λειτουργίες χρησιμοποιούνται συνήθως σε κώδικα C ή C, επειδή πολλοί από τους υποκείμενους μηχανισμούς του Android βασίζονται σε αυτές τις γλώσσες.

  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