Maison >développement back-end >tutoriel php >Explication détaillée de la limite supérieure de 2 Go de mémoire JVM dans les systèmes Linux
Les JVM que nous utilisons habituellement sont toutes 32 bits (la JVM 64 bits perdra 10 à 20 % de ses performances et n'est généralement pas recommandée), et l'espace d'adressage des programmes 32 bits devrait être de 4 Go. Pourquoi sous Linux ? La mémoire JVM ne peut utiliser que 2 Go ?
Après avoir communiqué avec l'équipe R&D du JDK, j'ai finalement compris quelques raisons liées. Ce problème existe dans certaines premières versions de Linux, en particulier les versions antérieures au noyau 2.5. Les versions postérieures à la 2.6 n'ont fondamentalement pas ce problème. Il s'avère que ces versions de Linux ont une limite de mémoire de 2 Go pour les processus, ce qui est la limite supérieure de la taille d'un bloc de mémoire avec des adresses contiguës, et la taille du tas de la JVM nécessite un espace d'adressage contigu. Par conséquent, 2 Go est l'utilisation théorique. du processus Java.
Si l'application Java doit utiliser une mémoire plus grande, il est recommandé d'utiliser une version plus récente de Linux ou de modifier la configuration du rapport mémoire application/noyau Linux à 3 Go : 1 Go. Il existe également la possibilité de choisir un système d'exploitation UNIX tel que Solaris. Les systèmes d'exploitation comme Solaris n'ont pas de limite de 2 Go pour la gestion de la mémoire JVM, la taille du tas peut donc être définie entre 3,5 et 3,6 Go environ.
Pour des explications plus détaillées sur la limite supérieure de 2 Go de mémoire JVM dans les systèmes Linux, veuillez faire attention au site Web PHP chinois !