我在jenkins上运行了几个构建作业,并且我安装了一个插件" JavaMelody"用于监视器内存消耗。分配的堆大小为8GB,并且使用的Java内存通常为2.5 GB。
现在我访问运行jenkins master的机器,打开任务管理器,识别团队的jenkins实例,并看到java.exe正在消耗的内存超过8GB。
我在这里很困惑。 2.5 GB或8GB用于Java内存。一些解释会有所帮助。
答案 0 :(得分:0)
这是java堆中已用内存与java进程(jvm)为堆分配的已用内存之间的区别。
实际上,jvm为堆保留了8GB的内存,但在内部它当前只在堆内使用了2.5GB。并且堆中使用的内存在堆中的新对象和垃圾收集器清理之间每隔一段时间变化很大。
因此,8GB堆中当前使用的2.5GB内存非常正常。
顺便说一句,java进程使用的内存超过8GB,因为除了为堆分配的内存之外,java进程还使用非堆内存。但那不是问题。