emi*_*lly 1 java operating-system heap-memory
我有 ubuntu 服务器,有 8 GB RAM。当我尝试将堆大小设置为 8GB 时,我的 Web 服务器(weblogic)无法启动。但如果我将交换大小增加到 11 GB,网络服务器就会启动。
所以我的问题是,在增加交换大小后,如何为我的 Web 服务器分配 8GB 堆大小(当我有 8 GB RAM,操作系统需要其中 1 到 2 GB 时)?
做。不是。做这个。
获得更多内存。
Java 和 Swap 做。不是。混合。Java和Swap就像“过河拆桥”一样糟糕。
Java堆的一部分将被换出,然后Java将进行GC,这将严重破坏盒子,并且仍有部分堆将被换出,Java将再次进行GC。
冲洗并重复,直到最终杀死 -9 Weblogic。
获取更多内存,或者没有内存。交换不是一个选择。
附加物:
您的机器有“虚拟内存”(VM)。通过添加交换,您可以扩展该虚拟机。当虚拟机多于实际内存时,机器会将不活动的内存页面“换出”到交换空间,然后将想要活动的页面从交换空间“换入”到 RAM。如果您有一堆很少需要时间的空闲进程,那么这并不是非常糟糕。
但 Java 却放大了这个问题。当物理 RAM 耗尽时,部分 RAM 会被换出到磁盘。当其中一些 RAM 是 Java 堆时,当垃圾收集器启动时就会遇到大问题。因为,一般来说,GC 会触及堆的每个页面。这意味着所有堆页面都需要处于“活动”状态,从而“换入”。
但如果它们不适合,就会遇到类似 8 拼图的问题。将内存移入和移出磁盘的位置。这称为颠簸。
交换的 JVM 堆(即 GC)是最坏情况抖动的教科书案例。
机器允许您分配额外的内存,因为它认为您拥有更多内存,因为您的虚拟内存(物理 RAM + 交换)更大。
| 归档时间: |
|
| 查看次数: |
2287 次 |
| 最近记录: |