“本机缓冲区”在JVM中意味着什么?

时间:2012-05-14 14:33:19

标签: jvm websphere

我从WebSphere Application Server的SystemOut.log文件中得到以下错误:

[5/11/12 8:13:46:291 GMT+08:00] 000063c0 WebApp        E   [Servlet Error]-[ICMResourceManager]: java.lang.OutOfMemoryError: unable to allocate 79683 bytes for native buffer
at java.io.FileOutputStream.writeBytes(Native Method)
at java.io.FileOutputStream.write(FileOutputStream.java:290)
at com.ibm.mm.icmrm.storage.RMOutputStream.write(RMOutputStream.java:65)
at com.ibm.mm.icmrm.storage.RMDataTransfer.copyData(RMDataTransfer.java:150)
at com.ibm.mm.icmrm.storage.filesystem.FileSystem.store(FileSystem.java:104)

这似乎是原生的OOM问题。我在这里有一个问题,这里的'原生缓冲区'与'直接字节缓冲区'相同吗?我可以通过重置属性 XX:MaxDirectMemorySize 来尝试放大“原生缓冲区”大小吗? BTW,它的默认值是多少? 或者我可以设置此属性 -Dcom.ibm.nio.DirectByteBuffer.AggressiveMemoryManagement = true 以使本机内存空间动态化吗?

WAS平台信息:

WebSphere Platform 6.1 [ND 6.1.0.27 cf270937.16]  running with process name cmrmCell01\cmrmNode01\icmrm1 and process id 1802306
Detailed IFix information: Please use the versionInfo command to view this information
Host Operating System is AIX, version 5.3
Java version = 1.5.0, Java Compiler = j9jit23, Java VM name = IBM J9 VM

1 个答案:

答案 0 :(得分:0)

我知道这不是一个很好的答案,但看看这篇文章Understanding how the JVM uses native memory on AIX是否有用。