java - 为什么JVM中新生代有两个Survivor区?
伊谢尔伦
伊谢尔伦 2017-04-18 09:58:39
0
4
863

为什么JVM中新生代有两个Survivor区?

如题。

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

répondre à tous(4)
伊谢尔伦

Personnellement, j'ai l'impression que S0 et S1 existent pour améliorer les performances.

Utilisation de l'espace survivant :

A tout moment, il y a toujours un espace survivant vide. Lors de la prochaine collecte de copie, Eden et les objets vivants d'un autre espace survivant seront copiés dans cet espace.
Les objets vivants sont copiés entre les deux espaces survivants jusqu'à ce que les objets soient suffisamment vieux et puissent être placés dans la génération titulaire (copier le passé)

Parce que les objets morts doivent être nettoyés lors du ramasse-miettes. S'il n'y a qu'une seule zone survivante, alors les objets morts dans cette zone survivante généreront des fragments de mémoire après avoir été nettoyés afin d'éviter la fragmentation de la mémoire, l'objet vivant. doit être déplacé. Déplacez-le et vous perdrez en performances.

S'il y a deux zones survivantes, selon la déclaration ci-dessus, il n'y aura aucun problème de fragmentation de la mémoire.

La réponse de SO est ici : http://stackoverflow.com/ques...

大家讲道理

La nouvelle génération utilise 复制收集算法, et les deux zones Survivant doivent coopérer avec 复制收集算法.
J'ai présenté ce type de problème en détail dans un de mes blogs. Si vous êtes intéressé, vous pouvez y jeter un oeil.

Peter_Zhu

Après chaque GC, les deux survivants échangeront leurs positions
La seule chose que je sais jusqu'à présent, c'est comment le perdre

迷茫

Utilisé pour éviter la génération de débris, c'est le légendaire système de jumelage.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal