Certains systèmes tels que Symbian insistent pour utiliser tas au lieu de pile lors de l'allocation
grands objets (tels que les chemins, qui peuvent être plus de 512 octets). Y a-t-il une raison spécifique à cela?allocation de mémoire dans les dispositifs de petite mémoire
Répondre
La plupart des périphériques intégrés ne sont pas fournis avec une unité de gestion de la mémoire, de sorte que le système d'exploitation n'a aucun moyen de développer automatiquement l'espace de la pile, transparent pour le programmeur. Même en supposant que la pile soit exploitable, vous devrez la gérer vous-même, ce qui n'est pas mieux que l'allocation de tas et cela annule le but de l'utilisation d'une pile en premier lieu.
La pile des périphériques intégrés réside généralement dans une très petite quantité de mémoire haute vitesse. Si vous allouez des objets volumineux sur la pile d'un tel périphérique, vous risquez de faire face à un dépassement de pile .
Les périphériques intégrés ont souvent une pile de taille fixe. Comme un appel de sous-programme en C n'a besoin de pousser que quelques mots sur la pile, quelques centaines d'octets peuvent suffire (si vous évitez les appels de fonction récursifs).
Généralement, la pile sur un périphérique intégré est fixée pour être assez petite, c'est-à-dire que 8K est la taille de pile par défaut sur Symbian.
Si vous considérez un nom de fichier de longueur maximum est 256bytes, mais double celui pour unicode qui est déjà 512bytes (1/16e de votre pile entière) juste pour 1 nom de fichier. Vous pouvez donc imaginer qu'il est assez facile d'utiliser la pile si vous ne faites pas attention.
La plupart des périphériques Symbian sont fournis avec une MMU mais, jusqu'à très récemment, ne supportaient pas la pagination. Cela signifie que la RAM physique est validée pour chaque processus en cours. Chaque thread sur Symbian a (généralement) une pile fixe de 8KB. Si chaque thread a une pile, augmenter la taille de cette pile de 8 Ko à 32 Ko, par exemple, aurait un impact important sur les besoins en mémoire de l'appareil.
Le tas est global. Augmenter sa taille, si vous en avez besoin, a beaucoup moins d'impact. Ainsi, sur Symbian, la pile est réservée aux éléments de données de petite taille - allouez les plus gros éléments du tas.
- 1. allocation mémoire
- 2. Allocation de mémoire par thread
- 3. Allocation de mémoire et bouclage
- 4. Allocation de mémoire dans l'application iphone
- 5. Allocation de mémoire dynamique dans VB6
- 6. Win32 TreeCtrl allocation de mémoire TVN_ENDLABELEDIT
- 7. Allocation de mémoire Java non bloquante
- 8. Allocation de mémoire SQL Server CLR
- 9. C++ Allocation dynamique de la mémoire
- 10. Allocation dynamique de la mémoire constante dans CUDA
- 11. Allocation de grands blocs de mémoire avec nouveau
- 12. Allocation de mémoire entre iPhone 2G et 3G
- 13. Allocation de mémoire et sortie pour UIImage sur iPhone?
- 14. Les délégués et les fuites de mémoire dans l'iPhone?
- 15. Objets de mémoire secondaire de mémoire principale
- 16. Comportement mémoire de/Possible fuite de mémoire dans UITableView
- 17. Fuite de mémoire dans JBoss
- 18. Comment recadrer ou obtenir une UIImage de plus petite taille dans l'iPhone sans fuites de mémoire?
- 19. CUBLAS d'erreur d'allocation de mémoire
- 20. Fuite de mémoire dans WPF
- 21. Débogage hors de l'exception mémoire
- 22. Limitations de la mémoire .NET
- 23. Utilisation de la mémoire
- 24. Fragmentation de mémoire WPF
- 25. Sémaphore de mémoire partagée
- 26. Déchargement de la mémoire
- 27. Limites de mémoire
- 28. javascript fuite de mémoire
- 29. Limite de mémoire PHP
- 30. Fuite de mémoire AVAudioPlayer
Vous voulez dire que les piles sont généralement allouées dans le cache? – chappar