什么是websphere中首选的sheapbase参数?

时间:2017-07-12 03:43:26

标签: tomcat websphere

有谁知道用于websphere的prefferedheapbase参数是什么? tomcat有没有类似的参数?

我可以从IBM Website找到的东西。

-Xgc:preferredHeapBase = 0x100000000

这将找到从4GB标记开始的Java堆,从而为其他进程留下较低的4GB。

我们可以在tomcat中设置这个参数吗?

2 个答案:

答案 0 :(得分:2)

这不是应用程序服务器设置,而是IBM JVM设置。它对在IBM JVM上运行的任何进程(包括tomcat)具有相同的效果。

就使用而言,对于一些非Java堆分配来说,显然重要的是地址低于32位。通过将java堆放得更高,它允许稍后的分配在32位线下发生。线程创建使用的内存就是一个例子。

在32位行之上创建整个堆的缺点是"压缩引用" IBM 64位JVM的功能效率不高。

答案 1 :(得分:0)

在IBM 64位JVM中,使用称为compressedrefs的概念,同时使用堆大小<25GB。原因是:

  1. 64位JVM将使用64位对象,从而增加对象大小和访问时间,尤其是在应用程序未进行64位优化的情况下。
  2. 为了提高性能并减少内存占用,compressedrefs将类,线程和监视器放在4GB(32位)内存行下。
  3. 如果java堆大小设置为小于4 GB,则堆可能低于此4GB标记
  4. 此外,操作系统将此地址空间用于自己的perpose,并存储一些本机库。
  5. 此设置有助于在内存占用和内存访问时间方面提高JVM性能。但是,这有一个缺点。由于4GB以下内存充满了Java堆,类 - 线程监视器和OS库,如果4GB内存耗尽且堆不能再增长,JVM会在尝试为内存分配内存时抛出内存异常一个对象。

    要缓解此问题,请使用-Xgc:preferredHeapBase = 0x100000000选项。这指示JVM以0x100000000(4GB)开始堆基 - 并且堆从4GB内存标记及以上增长。这为堆增长提供了足够的空间。类,线程和监视器仍然低于4 GB,因此它们仍然可以利用使用compressedrefs的性能改进。

    有关compressedrefs实现的详细说明,请参阅此文档:

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

    这是一个特定于JVM的选项,可以为JVM上运行的任何应用程序设置。