在AIX 32位Java上增加可用本机内存的技术
问与答
题
如果您在32位AIX上看到本机OutOfMemoryError问题,那么如何增加可用本机内存?
原因
本机内存是用于区分JVM可用的内存和Java应用程序使用的Java堆的术语。所有虚拟化资源(包括Java堆和Java线程)都存储在本机内存中,而JVM在运行时会使用这些数据。该内存称为本机堆。本机堆包含JVM本身的资源。例如,即时编译器,类和ClassLoader,以及Java应用程序。运行Java进程的内存称为进程地址空间。Java和本机堆都共享此存储区。进程地址空间的总大小以及Java堆和本机堆可用的内存量受到操作系统和硬件的限制。
回答
如果在AIX> = 5.2上使用32位IBM JVM,并且遇到本机OutOfMemoryErrors,并且最大堆大小(-Xmx)小于2304MB,则不能降低最大堆大小或使用其他技术来获得更多的本机内存,那么您可以通过将受影响的进程的AIX内存模型(LDR_CNTRL = MAXDATA)显式更改为0XB0000000 @ DSA来受益。此更改将每个进程的理论本机内存增加了三个段或756MB。但是,通常,此更改将使每个进程的可用本机内存增加大约400MB至600MB。此更改不会影响JVM的性能。但是,所做的更改确实是以将所有共享库私下加载到本机内存段中为代价的。如果将一台计算机上的X JVM更改为0xB @ DSA内存模型,那么该计算机的虚拟内存总使用量可能最多增加(N *(X-1))MB,其中N是共享库的代码和数据的大小。通常,对于库存的WebSphere Application Server,N约为50MB至100MB。
要更改WebSphere Application Server中的内存模型,请转到管理控制台->应用程序服务器-> $ SERVER-> Java和流程管理->流程定义->环境条目
- 单击新建。名称:LDR_CNTRL值:MAXDATA = 0XB0000000 @ DSA
- 点击确定
- 单击新建。名称:IBM_JVM_LDR_CNTRL_NEW_VALUE值:MAXDATA = 0XB0000000 @ DSA
- 点击确定
The AIX® 5.0 Java™ launcher alters its MAXDATA setting in response to the command-line options to optimize the amount of memory available to the process. The default are as follows:
-Xmx <= 2304M 0xA0000000@DSA
2304M < -Xmx <= 3072M 0xB0000000@DSA
3072M < -Xmx 0x0@DSA


被折叠的 条评论
为什么被折叠?



