2017-07-12 1 views
0

Est-ce que quelqu'un sait à quoi sert le paramètre prefferedheapbase dans websphere? Y a-t-il un paramètre similaire pour tomcat?Qu'est-ce qu'un parachutiste preferredheapbase dans websphere?

Quelque chose que j'ai pu trouver du IBM Website.

-Xgc: preferredHeapBase = 0x100000000

Ce localisera le départ de tas Java à la marque de 4 Go laissant ainsi le 4 Go inférieur pour les autres processus. Peut-on définir ce paramètre dans Tomcat?

Répondre

2

Ce paramètre n'est pas un serveur d'applications, il s'agit d'un paramètre IBM JVM. Il a le même effet sur tout processus exécuté sur une machine virtuelle Java IBM, y compris tomcat.

En ce qui concerne l'utilisation, il est apparemment important que certaines allocations non java-heap aient des adresses inférieures à la ligne 32 bits. En augmentant le tas java, il permet aux affectations ultérieures de se produire sous la ligne 32 bits. La mémoire utilisée par la création de threads est un exemple. L'inconvénient de la création de tout le tas au-dessus de la ligne 32 bits est que la fonction "références compressées" de la machine virtuelle IBM 64 bits n'est pas aussi efficace.

0

Dans IBM JVM 64 bits, un concept appelé compressedrefs est utilisé en utilisant une taille de segment < 25GB. La raison est la suivante:

  1. JVM 64 bits utilisera des objets 64 bits, augmentant ainsi la taille de l'objet et le temps d'accès, en particulier si l'application n'est pas optimisée 64 bits.
  2. Pour améliorer les performances et réduire l'encombrement de la mémoire, compressedrefs place les classes, les threads et les moniteurs sous une ligne de mémoire de 4 Go (32 bits).
  3. Si la taille du tas Java est défini comme moins de 4 Go, le tas peut-être placé sous cette marque de 4 Go
  4. De plus, le système d'exploitation utilise cet espace d'adressage pour le propre perpose, et stocke des bibliothèques indigènes aussi bien.

Cette configuration permet d'améliorer les performances de la JVM en termes d'empreinte mémoire et de temps d'accès à la mémoire. Cependant, cela a un inconvénient. Comme la mémoire de moins de 4 Go est remplie de Java heap, classes-threads-monitors et libs OS, si la mémoire de 4 Go est épuisée et que le tas ne peut plus se développer, JVM lancera une exception de mémoire insuffisante en essayant d'allouer de la mémoire. un objet.

Pour atténuer ce problème, l'option -Xgc: preferredHeapBase = 0x100000000 est utilisée. Cela demande à la JVM de commencer la base de tas à 0x100000000 (4 Go) - et le tas augmente de 4 Go de mémoire et plus. Cela fournit suffisamment d'espace pour que le tas grandisse. Les classes, les threads et les moniteurs sont toujours en dessous de 4 Go, ce qui permet de tirer parti de l'amélioration des performances de l'utilisation de compressedrefs.

Vous pouvez consulter ce document pour une description détaillée sur la mise en œuvre de compressedrefs:

ftp://public.dhe.ibm.com/software/webserver/appserv/was/WAS_V7_64-bit_performance.pdf

Ceci est une option spécifique machine virtuelle Java et peut être définie pour toute application en cours d'exécution sur la machine virtuelle Java.