我有Ubuntu的服務器,我有8 GB的RAM。當我嘗試將堆大小設置爲8GB時,我的Web服務器(weblogic)無法啓動。但如果我增加交換大小 大小爲11 GB,web服務器開始。增加交換大小如何增加堆大小?
所以我的問題是如何增加 交換大小後,我的web服務器(當我有8 GB的RAM,其中1到2 GB是OS需要)分配8GB堆大小?
我有Ubuntu的服務器,我有8 GB的RAM。當我嘗試將堆大小設置爲8GB時,我的Web服務器(weblogic)無法啓動。但如果我增加交換大小 大小爲11 GB,web服務器開始。增加交換大小如何增加堆大小?
所以我的問題是如何增加 交換大小後,我的web服務器(當我有8 GB的RAM,其中1到2 GB是OS需要)分配8GB堆大小?
做。不。做這個。
獲得更多的記憶。
Java和Swap Do.不。混合。 Java和Swap就像「穿越流」一樣糟糕。
Java堆的一部分將被交換出來,然後Java將會GC,這會使得該框非常糟糕,並且堆的一部分將被交換出來,Java將再次GC。
沖洗並重復,直到你最終殺死了-9個Weblogic。
獲得更多的記憶,或沒有。交換不是一種選擇。
補遺:
您的機器有「虛擬內存」(VM)。通過添加交換,可以擴展該VM。當虛擬機的數量超過實際內存時,機器會將不活動的內存頁「換出」到交換空間,然後「交換」將要從交換空間活動到內存的頁面。如果你有一堆很少需要時間的空閒進程,這並不是非常糟糕。
但Java擴大了這個問題。當物理RAM用完時,該RAM的一部分被換出到磁盤。當某些內存是Java堆時,那麼當垃圾收集器啓動時會遇到很大問題。因爲通常情況下GC會觸及堆的每一頁。這意味着所有的堆頁都需要「活躍」,因此「交換」。
但是,如果他們不適合,那麼你有一個像8難題一樣的問題。你在哪裏將內存從磁盤中移出。這被稱爲顛簸。
交換的JVM堆是GC是最壞情況抖動的教科書案例。
機器讓你分配額外的內存,因爲它認爲你有更多的內存,因爲你的虛擬內存(物理RAM +交換)更大。
出於好奇,在增加它之前,您的交換大小是多少? –
如果你有一個擁有8GB堆和11GB交換空間的進程,那麼你的生活就處於邊緣(除非這個Web服務器是唯一可以在系統上運行的進程)一個進程的整個虛擬地址空間必須備份到磁盤(即使有可用的內存) – user3344003