Xpages / Domino Java内存使用说明

时间:2018-05-29 11:26:57

标签: jvm xpages lotus-domino

在使用一个特定的XPage应用程序时,我们在一些用户报告的服务器上出现间歇性性能问题。我的第一个想法是它与Java内存的使用和糟糕的代码回收有关,所以我从那里开始。目前,根据Mark Leusink奇妙的调试工具栏,服务器(具有32Gb物理RAM的64位Windows机器)的使用数据如下所示:

enter image description here

我想确认一下我对这些数字的理解:

  1. 最大堆大小 - 我很好,并知道如何更改它(推荐设置是可用内存的四分之一,但是由于此服务器上的用户群很少,我'确定2Gb绰绰有余)
  2. Total Allocated - 这对我来说似乎很低,但我是正确的,因为这是由服务器自动设置的,如果需要更多的Java内存,那么它将分配更多(最多金额)在最大堆大小中指定?)仅当垃圾收集无法释放足够的空间来加载新的java对象时才会发生这种情况吗?
  3. 已使用 - 我相信这会显示服务器上使用的内存,而不仅仅是包含调试工具栏本身的应用程序。这只会显示Domino HTTP任务使用的内存(所有XPages应用程序),还是会受到Java代理的影响?
  4. 奖金问题:

    • “总分配”数字最初是如何设定的?在我们拥有的开发服务器上(有一个当前用户 - 我),该数字当前设置为256M,但我无法将其与任何Notes.ini参数相关联。 (另外,这个数字是否有推荐值?)
    • 如果我在达到“总分配”数字时对垃圾收集运行是正确的,那么,假设数字较低将迫使它更频繁地运行。这会对服务器性能产生负面影响吗?
    • 我们是否也在这台服务器上运行Traveler(虽然只有大约9位用户),我们应该考虑哪些事情?

    由于

1 个答案:

答案 0 :(得分:3)

工具栏中显示的信息是JVM提供的标准数字:totalMemory()maxMemory()freeMemory()。有关详细说明,请参阅this问题。给出的三个值是针对整个JVM的,而不是特定的应用程序。

在Domino HTTP JVM中,您可以使用maxMemory notes.ini参数设置HTTPJVMMaxHeapSize。您无法设置/更改总分配(totalMemory)值,但也不需要。 JVM将在需要时分配更多内存(最多为maxMemory)。执行垃圾收集后,它最终也会再次释放此内存。

Java代理不会影响这些数字。唯一的例外是在HTTP进程中运行的Java代理(例如,使用?OpenAgent命令从浏览器调用)。

如果JVM需要更多可分配的内存,则在服务器上可能会遇到内存问题(OutOfMemory异常)。您可以通过创建一个简单的XAgent来输出JVM的当前值来监视此值:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" rendered="false" viewState="nostate">
  <xp:this.afterRenderResponse><![CDATA[#{javascript:

var externalContext = facesContext.getExternalContext();
var writer = facesContext.getResponseWriter();
var response = externalContext.getResponse();

response.setContentType("application/json"); 

response.setHeader("Cache-Control", "no-cache");

var max = java.lang.Runtime.getRuntime().maxMemory();
var free = java.lang.Runtime.getRuntime().freeMemory();
var total = java.lang.Runtime.getRuntime().totalMemory();

var memory = {
    max : max,
    total : total,
    free : free,
    available : (max - total) + free
};

writer.write( toJson(memory) ); 

writer.endDocument();
}]]>
  </xp:this.afterRenderResponse>
</xp:view>