java - 如何增加Jboss中的Heap和Perm内存?

标签 java memory memory-management jboss

真正的问题是我不知道如何根据服务器上可用的 RAM 内存来增加 Perm 大小内存。 我在配置文件中可以看到我为堆内存保留了8192Mb,MaxPermSize为1024m。

JAVA_OPTS="-Xms1024m -Xmx8192m -XX:MaxPermSize=1024m -Djava.net.preferIPv4Stack=true"
JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS -Djava.awt.headless=true"

我的服务器上的可用总内存为 9Gb。据我所知,Perm内存空间不属于堆内存。我使用 8Gb 作为堆内存,1Gb 作为 Perm。 因此,如果我想增加 Perm 内存,我需要减少堆内存,例如减少到 7GB,然后将 Perm 内存增加到 2GB,对吧? 或者我可以为堆内存留出 8Gb,并将 PermSize 增加到 2Gb。

我这样做是因为我从服务器收到此错误。但我不确定问题是什么,因为正如您所看到的,Eden 空间已满,而且 PermGen 也已满。 但问题可能出在配置上,如果我的服务器上有 9GB 可用 RAM,并且我为堆内存保留了 8GB,为永久内存保留了 1GB,那么为一个空间保留的内存可能没有被完全占用。

Heap
 PSYoungGen      total 1937408K, used 1119744K [0x0000000755500000, 0x00000007ff680000, 0x0000000800000000)
  eden space 1119744K, 100% used [0x0000000755500000,0x0000000799a80000,0x0000000799a80000)
  from space 817664K, 0% used [0x0000000799a80000,0x0000000799a80000,0x00000007cb900000)
  to   space 811008K, 0% used [0x00000007cde80000,0x00000007cde80000,0x00000007ff680000)
 ParOldGen       total 5592064K, used 5591839K [0x0000000600000000, 0x0000000755500000, 0x0000000755500000)
  object space 5592064K, 99% used [0x0000000600000000,0x00000007554c7ce0,0x0000000755500000)
 PSPermGen       total 261120K, used 260769K [0x00000005c0000000, 0x00000005cff00000, 0x0000000600000000)
  object space 261120K, 99% used [0x00000005c0000000,0x00000005cfea86c8,0x00000005cff00000)

最佳答案

您的 MaxPermSize=1024m,但 PSPermGen 只分配了 261m,因此您不使用全部。

从性能角度来看,将 Xms 设置为与 Xmx 不同通常不好。

您将所有物理内存用于堆和永久代。您应该为操作系统保留一些内存。您的服务器可能开始寻呼。

分析 gc-log 或使用 jstat、jconsole 或 jvisualvm 来监视内存使用情况可能会有所帮助。

关于java - 如何增加Jboss中的Heap和Perm内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47579035/

相关文章:

java - 基于spring.profiles.active动态编译依赖

c - 如果在C中退出(exitcode)会发生内存泄漏?

c# - 128 GB Ram x64 cpu 内存不足问题

memory - 分页/页面错误处理程序 - 如何使用虚拟地址查找磁盘上的特定内容

c# - 为什么 Struct 中属性的顺序会改变实例的大小?

C内存泄漏与双指针

java - 如何动态添加 JLabels 到 JPanel?

java - Jsp默认日期格式

java - 在方法体中抛出新异常与在方法 header 中抛出异常有什么区别

c - malloc创建二维数组时内存是怎么分配的?