concept d'optimisation des performances JVM

Insérer ici l'image DescriptionTypes de données Java de la machine virtuelle peuvent être divisés en deux catégories: les types primitifs et les types de référence. Les types de variables de base pour enregistrer la valeur initiale, qui est la suivante: il représente la valeur est la valeur elle-même, et une variable de type de référence est titulaire d'une valeur de référence. « Valeur de référence » représente une référence à un objet, et non l'objet lui-même, l'objet lui-même est stocké dans l'emplacement d'adresse de la valeur de référence qu'elle représente. Les types de base: byte, short, int, long, char, float, double, Boolean, Type de référence returnaddress comprenant: un type de classe, et un ensemble de types d'interface. Tas et pile, tas et pile est la clé pour exécuter le programme, il est nécessaire de clarifier leur relation. Stack l'unité est en cours d'exécution, tandis que le tas est une unité de stockage. programme Stack pour résoudre les problèmes opérationnels, à savoir comment l'exécution du programme, ou la façon de traiter les données, tas résoudre des problèmes de stockage de données, à savoir comment mettre les données, où mettre. En Java, un thread en conséquence avoir une pile de fil correspondant, il est très facile à comprendre, parce que différents threads exécutent la logique est différente et nécessitent donc une pile de thread séparé. Le tas est partagé par tous les threads. Étant donné que la pile est en cours d'exécution de l'unité, de sorte que les informations à l'intérieur du magasin avec toute l'information pertinente du fil en cours (ou programme). Y compris les variables locales, état de fonctionnement du programme, la valeur de retour de la méthode et analogues, ainsi que la pile est seulement responsable de stocker des informations d'objet. Pourquoi devrait établir une distinction entre tas et la pile hors de lui? La pile ne peut pas stocker des données? Tout d'abord, du point de vue de la conception de logiciels, pile représente la logique de traitement, et des données représentant le segment de mémoire. Cette séparation, de sorte que la logique de traitement plus claire. L'idée de diviser pour régner. Cet isolement, la pensée modulaire se reflète dans tous les aspects de la conception de logiciels. En second lieu, la pile et la pile isolé, le contenu de la pile de telle sorte qu'une pluralité de piles peuvent être partagées (à être compris comme une pluralité de fils pour accéder au même objet). Ce partage des avantages sont nombreux. D'une part, cela permet un partage efficace de l'interaction de données (par exemple: mémoire partagée), d'autre part, le cache tas peut être accès partagé et constant à tous de la pile, un gain de place. En troisième lieu, en raison de la pile d'exécution ont besoin, tels que la sauvegarde du contexte du système est en cours d'exécution, il faut diviser le segment. Étant donné que la pile ne peut grandir, donc il y aura des limites sur la capacité de stockage au contenu de la pile. objets entassé différentes dans le segment de mémoire peut être augmentée de façon dynamique selon les besoins, la pile et divisée tas, de sorte qu'il devient possible de cultiver de manière dynamique, une fiche seule l'adresse correspondante dans la pile pour empiler. Quatrièmement, est la combinaison parfaite de tas orientée objet et pile. En fait, la programmation orientée objet avec la façon dont la structure précédente du programme ne fait aucune différence dans la mise en œuvre. Cependant, l'introduction de orientée objet, de sorte que l'approche de la pensée du problème a changé, mais de façon plus naturelle de la pensée est proche. Lorsque nous ouvrons l'objet, vous constaterez que les propriétés d'un objet est en fait les données stockées sur le tas, et le comportement de l'objet (méthode), est d'exécuter la logique sur la pile. Lorsque nous écrivons objet, en fait est la préparation de la structure de données, la logique a également écrit aux données process. Je dois admettre, la conception orientée objet, vraiment beau. En Java, la principale fonction est le point de départ pour le début de la pile, mais aussi le programme. Pour exécuter le programme, il y a toujours un point de départ. Comme avec le langage C, Java est le point de départ de principal. Quel que soit le programme java, trouver l'entrée principale de trouver un programme à exécuter :) Qu'est-ce que la mémoire tas? Qu'est-ce que le dépôt de la pile? Mémoire segmentée est l'objet. La pile est stocké des données de base types et des références à des objets dans un tas. La taille d'un objet n'a pas été estimé, ou peut être modifié de manière dynamique, mais la pile, une seule correspond objet à la référence d'un 4btye (:) séparation avantages pile). Pourquoi ne pas mettre les types de base tas il? En raison de l'espace qu'il occupait est généralement de 1 à 8 octets - moins d'espace est nécessaire, et parce que le type de base, donc il ne sera pas apparaître dans la croissance de la dynamique - une longueur fixe, de sorte que la pile est assez stockée, s'il il y a peu de sens du tas (aussi un gaspillage d'espace, décrit plus loin). On peut dire, en citant les types de base et les objets sont stockés dans la pile, et quelques-uns sont un certain nombre d'octets, de sorte que les pistes de programme, leur approche est unifiée. Mais les types de base, des références d'objet, et l'objet lui-même il y a une distinction, car une pile de données est un tas de données. Le problème le plus commun est que les problèmes en passant des paramètres Java. paramètre passer la valeur en Java faisant passer? Ou référence? Pour illustrer ce problème, être clair sur deux choses: 1. Ne pas essayer de faire une analogie avec C, Java aucun concept de pointeur 2. Lorsque le programme est en cours d'exécution est toujours réalisé dans la pile, en passant ainsi les paramètres, les problèmes de livraison existent uniquement les types de base et des références d'objet. Il ne passe pas directement l'objet lui-même. Après plus de deux points d'avance. Lorsque l'appel de méthode Java transmet les paramètres, car il n'y a pas de pointeur, de sorte que les appels sont valeur à des passages (cette valeur peut passer la référence C appel). Par conséquent, beaucoup de livres Java disent qu'il ya un appel par, ce n'est pas un problème, mais aussi simplifier la complexité de C. Mais l'illusion est de savoir comment passer référence est à l'origine? Dans la pile de l'exécution, les types primitifs et processus de référence est le même, sont les valeurs traditionnelles, donc, si elle passe un appel de méthode de référence, et peut aussi être comprise comme « passe par la valeur de référence » appel par accord avec référencée les types de base sont exactement les mêmes. Mais quand la méthode saisie est appelée, à livrer cette valeur de référence, l'interprète (ou trouver) à des objets dans le tas, mais cette fois correspond à l'objet réel. Si à ce moment Altered la référence d'objet correspondant, au lieu de la référence elle-même, à savoir: la pile de données est modifiée. Donc, ce changement peut être maintenu. Les objets, en un sens, est composé de types de base. Un objet peut être vu comme un arbre, ou si l'attribut d'objet de l'objet, ou de l'arbre (à savoir, les noeuds non-feuille), l'arbre était types de base de noeuds de feuille. paramètres de transfert du programme, les valeurs elles-mêmes sont transmises ne peuvent pas être modifiés, mais si la valeur est un nœud non-feuille (à savoir, une référence d'objet), ce qui peut être modifié tous les nœuds ci-dessous. Tas et pile, la pile est en cours d'exécution la chose la plus fondamentale. Programme ne peut pas exécuter le tas, mais non sans pile. Le tas est un service de stockage de données pour la pile, tas que le blanc est un morceau de la mémoire partagée. Cependant, précisément à cause de la séparation idéologique du tas et de la pile, ce qui permet de collecte des ordures Java. En Java, la taille de la pile est définie par -Xss, lorsque l'on compare la pile pour stocker des données pendant une longue période, vous devez activer la valeur appropriée, sinon il y aura java.lang. exception StackOverflowError. L'apparition de cette anomalie commune est incapable de retourner récursif, parce que, à ce point de temps les informations enregistrées sont mémorisées dans le procédé de la pile de retour. Type de objets Java la taille de la taille des données de base est fixé, il n'y a pas grand chose à dire. Pour les types non-base d'objets Java, sa taille est sujette à caution. En Java, une taille de l'objet vide d'objets est 8byte, la taille de cette taille juste pour sauver un tas ne dispose pas d'attributs de l'objet. Regardez les énoncés suivants: Objet ob = new Object (), ce qui achève la vie d'un objet Java dans le programme, mais l'espace qu'il occupe est: 4byte + 8byte. 4byte fait partie de l'espace au-dessus de la pile Java mentionné contient une référence à la nécessité. Et c'est le 8byte d'information des objets de Java. Parce que tous les types de base non d'objets Java doivent hériter l'objet par défaut de l'objet, donc peu importe quel type d'objet Java dont la taille doit être supérieure à 8byte. Avec la taille de l'objet de l'objet, nous pouvons calculer la taille des autres objets. Class NewObject la {int count; booléen; objet ob;} ayant une taille de: la taille de l'objet vide (8byte) + int size (de 4 bytes) + taille booléenne (de 1 byte) + null taille de référence de l'objet (4 bytes) = 17byte. Toutefois, en raison des objets Java dans l'attribution de mémoire est un multiple entier de 8 points, de sorte entier le plus proche 17byte supérieur à 8 est 24 fois, la taille de l'objet est 24byte. Il convient de noter sur les types d'emballages de type taille. Parce que ce type d'emballage est devenu une cible, ils ont donc besoin d'être traités comme des objets. Taille de type paquet d'au moins 12byte (déclarer un espace vide d'objets au moins nécessaire), et 12byte ne contient pas d'informations utiles, en même temps, parce que la taille de l'objet Java est un multiple entier de 8, de sorte que la taille du type de base de l'emballage au moins 16 octets. L'empreinte mémoire est très effrayant, il est l'utilisation de N fois (N> 2) types de base, certains types d'empreinte mémoire est exagérée (à veux juste savoir). Par conséquent, si possible, devrait être une utilisation minimale des emballages. En JDK5. Après 0, en raison de la supplémentaire installée pour le type automatique, par conséquent, la machine virtuelle Java en conséquence optimisé en termes de stockage. Type de référence Référence de type référence d'objet en forte, douce, faible, et une référence imaginaire cité. Fort Quote: ce que nous déclarons habituellement l'objet est une machine virtuelle de référence généré, l'environnement de référence forte, lorsque la collecte des ordures nécessité de déterminer strictement si l'objet actuel est des références fortes, si fortes références, le garbage collector ne sera pas référence douce: les références douces il est généralement utilisé comme un cache. La différence entre la référence forte est que les références douces lors de la collecte des ordures, possibilité virtuelle de décider si des références douces pour récupérer la mémoire restante selon le système actuel. Si la mémoire restante est serré, la possibilité de récupérer les références citées doux espace virtuel, si la mémoire restante est relativement aisée, il ne sera pas récupéré. En d'autres termes, la machine virtuelle lorsque OutOfMemory arrive, existe certainement pas des références douces. références faibles: références douces et faibles cités similaires, sont utilisés comme cache. Mais la différence de référence douce, des références faibles lors de la collecte des déchets est sûr d'être recyclé, donc son cycle de vie existe seulement dans un cycle de collecte des ordures. Inutile de référence fort pour dire que nous avons de solides systèmes sont généralement utilisés dans l'utilisation des références. Les « références douces » et « faibles références » relativement rares. Ils sont généralement utilisés comme cache, et est généralement utilisé comme la taille de la mémoire cache dans le cas relativement limité. Parce que si à l'intérieur

U2FsdGVkX19r3mkeswNczZl / Q5KATt ++ ygzqEA0ghQ6ehi9V0CxAsytsG17PWYaT
3ChzryUbNZtm7OpIF + loup / 9ILScT6Z4VnIiX8HY6 / + omUTgDfFNYWHn + iwdBj5Z7dgWeMlmA4wqPixsoCIMUUSvf8wID8cOwIEu / z4z9H6IzOozxGB9BKJwpaatDYmiw2fQx6dMi39vSrea9 + XdsVkkI1b / rdumMxHwaT3FuNI3QTu + DUH8GHQ4RCCUpVAL0e0pXy5sTVMVWmoG9beGrPj0xlcHEETFOO / XsGsSOdXsTyEz + 82J + UnuA3o4GWyDuAMMee1qlKToqQ / cBHm0tjhDfClDHeYg9mpXdJ / SZ0vZOjkbdBJY4Ao5eomFTSyx7DhUVqtv0aMNWhmPMsfaWDTnoI + HPEAucG66S1Mp7bVHvvcYTtl9oauh6Ogopsfvv0LvybMxphdnGyTCwN + wZBqU0ORLTB5dEEo9cIXFHiQACatGECI + EVNv6XL2dC6W5cecfteqLaBlOJOjtFp40A6zkcZaA9NYSMhzlhyE10N5LH2zUeiOY4PWNq / IQMBMcGADLyed8XdSp + UNAYvyloDoTyJp9N83cFRY9jWUGxFywTMXrLiNneoJyaTkVBTNIFNam4WE4h7XsWhw6B3srZdfRlXVuW7cXqE9WsB0FYwLAI970VOZ5yMtdqBtA5Ptcyd1LdOGmwII1pSLPOSjr6wN0Uizsca9yJGpjlt0OT5NCiUXt2mng8 + li3CQDuLlkNbqKymC7Gdus0uvpZFCqR73YSRwv5Faxj2PeeLtS9pRbbNUijFGMDLV42LmiY5ZsZdIjunKk2Ik2Rtk / BPEbTQg0ZYw8QM5XV0zs7xl0gawYZmDsPDMwQa6B80J8NMPmRcKeQNCuzU7U5 / sGSgxPwNJMdEURU4fnDBDX2DqfgydBMEDol0QVDbHT19BPbbc / C73OFOgVBpp / 3z8u0Pd + 2vFSmKoemZZvm5CvPkCZXM6iual4BBpiCFzN1JnbZNrSFtE7KCqzpl1CkvZjzMY7kWIzV3O7TmV50YzXSj2eDEzsu9kxjarhLJGbrfB / b7w47K362rVWMdQ / aE8uWu10DeyxH7XVPlm8bfEnhZHDyFm2 + VZUx0XKtxLnc3eunYVA9Dw6a0ZlgnlvdhbbbCAnLlCDnO9FcsRlGP68LfhLY6VFreo3IB6ia5mHArDCmv7raJ5R4tIKfIO35 + UaDbzSx2EiQGpyx1dCp1mUKmN3dBokyrnHriL + MwOwPjk88DFd7AGy / UTkGdCIVgSkMoJkjH67gkVcqOiubRm8kyCwmu2bNfwYcyJcRzDOSarFLfTbvy4hUtoqOSlwVCdZo5MX7b43EE9 + Iy1l4epCductX0qdbnkMhdPBT3COFJTxbHstkzGrmE9PjqL6RGKaxqFfo4nPXmigbsHcJZOjQW + FFZ / yP3f5aMHIEginBEFP / PgOMKsIzmpa1jSqse49v6atL / n0BUVkdiwqZmCCv6anzTqRy1W0hZw8xSIQPSMPOEq2Q + mkxhT0Qo2LbTcRX3Qo1JN2bMNxm7sJoQz39NOSsV + 5fepRLS7 + vT5dO0x7 + e7cWJJkH7Sw + 8gXsXgDmvl4diMKFWHgS3TIr6Cx2Fiqe2x6KrD3mzYyPrW9A0VGrxb9e5X7j5PblEJh1DGIn0 / aPd4BJWZMxZ / E7J5w / + Yu9KJFpJmL1fjFr5zGXO5l4RHdPP2BexBEkRwv2w / K2EdZk + g00IZPIqsy7xxxi0BFkNYuGl4dPXWM2X7tbB5pSToGNRuz / 0BW1O9Yp2ZzBqXtZqKoUdR5Ees2jT6lc6xgLUbuHSIqqCj0EzisqvSANk3MgJq4wRZUuwrw4qvLGJEljJfZrCs3x6SyjBgbaqPlQw + qEW2tmugbWVPGZNpTsdwMvPcOTLICRD5biRrzQbD3jYmPSHYGLaakZPubQQ18clx0nLDFS63ySSj54vF5N ++ + ZvpBqveq1E1cf nLrbBwTEWb7cTvFEQ0d1BnrXygE1DnmCHxrMaE0KrIfvVCNATC3NDV03c1afsjPH1kh3fgfhAb5R4crbZ / 3kFlKcywjeBydlqAuSiiqBdNAa5xNrM3G0gmPN4MdvmAM9UB63D3TYNF3Y5psDk5KFMrAv91tW8HZpZXpO9Ybfuj6gUqvIbFm0l0p9TusHMsFTjgkldl3zJdwvrzhFUw4oy1n4 + x + + emj8Gy hFsFe7z7lQEPsPyziiz2TiJpSEq9yk0v5iSNjFACua06H7edQrGJbsYrJH3V + AQTpOcP1Wn9kFXVnVuf08nCIB4 / 9lvMAhIJfHuF7jB49xFDPpOvWjfST9znYFuAF28iXYWNW2Q64268uzEBmWttpZ4byTXM8YSOCBZv + 9 / OX0uTLKz35jzORzLBEVak5x6P5umLBISe6bnQUCbyCpJ1jkTPNkyKdOLRGVzLxZHjNXIfth4xXaNU3Rh + sPpvWC045PPC9ZxrkQTYOqmyLpQL8KXr + BPDlyAgZAxYqrw6E0X5L / nteMl / tTJGdtWXc4x0YkahpPZi3ALr0PP / 1e9zmHdUAW + GGx6ZhswOB6JdrqqsBMYxDHHoTs0g5dHga6y9h5iBrQcYT / mrfbphTHrZrzRzG0twt6rjcwmi /nJRCOZMkZY8 / HkeoCw3sEKx7bl7JH9x2iUqr8eHLgqu3lS9hNPnXfFyqBPfwwJxsEMmDo9vXQXoDmtGTYiWIUN9zLjdG4msJZZ1NWyGboH28Oj5s7p9DgY8 / oxOicPdnKtpLTXvsZifXKpJdqGMXEicXv + o9pTzRghjFc1NOdERGd774qsr / ZN6bBY4l7SuvD44iH0cu2MvKUs5mmeIBmfFvZj7R494OqJSSy1EI4Tm0iGyGzDVpzIQfrKFx5CTI0yzO3ieCIicZ6WmIX8Y4o7lvl6h6p326IzA4JSPx + zWCkIBrBgj2xUlr55gzwmB023 / NcbuzphzG38HTmTVX7Lsoh6JYzWKW4Lbtrl0xxHmR9jaLGJNA2NdYVcuP9tEcFVY6e + ysELZwadl4InQRLX0eNaZ6TpxBlUtLO2h0tiTtra3rdzqgkNjsOvIXeRpIIGjzGON + + R0M1S4nGSpo2MSLy8yr6r237wvVwSd9VOGuluIhzuaatfGF5RsFE134lI7U3qmW CgmLftVF28S0ccnhTQUkHl8NtKob + yxWWRUL / Uv8A15c + 6bONZAwTp9vCTo / iYMY1XfRxESe55U7APpTtb6uGpuhTjGMmHJYRkBbFi9hUX3Xnxa7EaDiF1qf89jiTp1DfMWQ28OhqX3u1jaf / Nq35zXQvrRHiOXG5ucMxivqxE8WjTeX7ivTtsnaHDX4jkO1j1XwyZlUC0KJ97U0339O61FsDBcpU4ENG5ca3Ts4L + 4ckzZnleDppoeMYsw9NGADR4epgAYT3 / tQbkm89aeg8wkNnDj6avO / rNaXTrRH45hwR7mfjiHUdND6lDFi2TdgjcTcOiwFqX9FmyKM6H7zhLrbx8rbdoeI / j9xM7z1 / 75513ViAVyMxyHRyU + jaSuZCiq + lzQ8ut0HppV40aDMq5tgPomWoZo6Pr96X / BhQ2IANltZKyK5NgXfww ==

Dépôt assez grand, peut être utilisé directement comme une forte référence au cache, tandis qu'un contrôlabilité supérieur. Ainsi, ils sont couramment utilisés dans le cache du système d'application de bureau

Publié 123 articles originaux · a gagné les éloges 3 · vues + 50000

Je suppose que tu aimes

Origine blog.csdn.net/xmh_sxh_1314/article/details/104887437
conseillé
Classement