gpt4 book ai didi

java - 增加交换大小如何允许我增加堆大小?

转载 作者:行者123 更新时间:2023-11-29 04:52:37 24 4
gpt4 key购买 nike

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

所以我的问题是如何在增加后为我的网络服务器分配 8GB 堆大小(当我有 8GB RAM,其中 1 到 2GB 用于操作系统时)交换大小?

最佳答案

做。不是。这样做。

获取更多内存。

Java 和 Swap Do。不是。混合。 Java 和 Swap 就像“过河”一样糟糕。

Java 堆的一部分会被换出,然后 Java 会 GC,这会把盒子打得很厉害,还有一部分堆会被换出,Java 会再次 GC。

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

获取更多内存,或者不用。交换不是一种选择。

附录:

你的机器有“虚拟内存”(VM)。通过添加交换,您可以扩展该 VM。当您的 VM 多于实际内存时,机器会将不活动的内存页面“换出”到交换空间,然后将想要激活的页面从交换空间“换入”到 RAM 中。如果您有一堆很少需要时间的空闲进程,这还不算太糟糕。

但是Java放大了这个问题。当您用完物理 RAM 时,其中一些 RAM 会换出到磁盘。如果其中一些 RAM 是 Java 堆,那么当垃圾收集器启动时就会出现大问题。因为一般来说,GC 会触及堆的每一页。这意味着所有堆页面都需要“活跃”,因此需要“交换”。

但如果它们不适合,那么您就会遇到类似 8 拼图的问题。您将内存移入和移出磁盘的位置。这称为抖动。

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

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

关于java - 增加交换大小如何允许我增加堆大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34858289/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com