如何增加交换大小可以增加堆大小?

我有ubuntu服务器,我有8 GB的RAM。 当我尝试将堆大小设置为8GB时,我的Web服务器(weblogic)无法启动。 但是,如果我将交换大小增加到大小为11 GB,网络服务器就开始了。

所以我的问题是如何在增加交换大小后,如何为我的Web服务器分配8GB堆大小(当我有8 GB RAM,其中OS需要1到2 GB)?

做。 不。 做这个。

获得更多记忆。

Java和交换做。 不。 混合。 Java和Swap就像“Crossing the Streams”那样糟糕。

Java堆的一部分将被换出,然后Java会GC,它会严重破坏盒子,并且仍然会换出一部分堆,而Java将再次使用GC。

冲洗并重复,直到你最终杀死-9 Weblogic。

获得更多内存,或者不需要。 交换不是一种选择。

附加物:

您的机器具有“虚拟内存”(VM)。 通过添加swap,可以扩展该VM。 当您有比实际内存更多的VM时,机器将“交换”非活动内存页面到交换空间,然后“交换”要从交换空间进入RAM的活动页面。 如果你有一堆很少需要时间的空闲进程,这并不是非常可怕。

但Java放大了这个问题。 当物理RAM耗尽时,某些RAM会被换出到磁盘。 当一些RAM是Java堆时,那么当垃圾收集器启动时你会遇到一个大问题。因为,一般来说,GC会触及堆的每一页。 这意味着所有堆页面都需要“活动”,因此“交换”。

但如果它们不适合,那么你就会遇到类似8拼图的问题。 你在磁盘上移入和移出内存的地方。 这叫做颠簸。

作为GC的交换JVM堆是最坏情况下颠簸的教科书案例。

机器让你分配额外的内存,因为它认为你有更多,因为你的虚拟内存(物理RAM +交换)更大。