我有ubuntu服务器,我有8 GB的RAM。当我尝试将堆大小设置为8GB时,我的Web服务器(weblogic)无法启动。但是,如果我增加交换大小 大小为11 GB,网络服务器开始了。
所以我的问题是我如何为我的网络服务器分配8GB堆大小(当我有8 GB RAM,其中OS需要1到2 GB)增加后 交换大小?
答案 0 :(得分:3)
执行。不。这样做。
获得更多记忆。
Java和Swap Do.不。混合。 Java和Swap就像“Crossing the Streams”Bad。
Java堆的一部分将被换出,然后Java会GC,它会严重破坏盒子,并且仍然会换出一部分堆,而Java将再次出现GC。
冲洗并重复,直到你最终杀死-9 Weblogic。
获得更多内存,或者不需要。交换不是一种选择。
附录:
您的计算机具有“虚拟内存”(VM)。通过添加swap,可以扩展该VM。当您有比实际内存更多的VM时,机器将“交换”非活动内存页面到交换空间,然后“交换”要从交换空间进入RAM的活动页面。如果你有一堆很少需要时间的空闲进程,这并不是非常可怕。
但Java放大了这个问题。当物理RAM耗尽时,某些RAM会被换出到磁盘。当一些RAM是Java堆时,那么当垃圾收集器启动时你会遇到一个大问题。因为,一般来说,GC会触及堆的每一页。这意味着所有堆页面都需要“活动”,因此“交换”。
但如果它们不适合,那么你就会遇到类似8拼图的问题。您将内存从磁盘移入和移出的位置。这叫做颠簸。
作为GC的交换JVM堆是最坏情况下颠簸的教科书案例。
由于您的虚拟内存(物理RAM +交换)更大,机器可以让您分配额外的内存,因为它认为您拥有更多内存。