2014-01-16 26 views
0

我在亞馬遜網絡服務上運行t1.micro進行演示/測試,當我部署時有Jetty的PermGen outofmemoryerror,所以我想我應該改變實例類型,但我該怎麼做,是否真的有必要或可以如果我爲Java分配更多的內存,我做到了嗎?我在Ubuntu上運行Jetty,使用oracle java 7進行休眠的webapp。AWS PermGen,爲t1.micro增加RAM還是重新配置Java?

回答

2

它更可能是你需要增加PermGen的內存嘗試添加該export JAVA_OPTIONS="-XX:MaxPermSize=512m"您jetty.sh

1

亞馬遜t1.micro實例只0.6xx吉布內存中,因此謹慎選擇PermGen的大小,你需要一個非常嚴格的內存管理。

「-XX:MaxPermSize = 512m」有點大,但您可以用更小的步驟播放設置。

在java 7中,permgen存儲加載的類,所以你不需要爲它們指定太高的值(除非你創建了一個巨大的應用程序:))。默認大小爲64米,但對您來說看起來不夠。以32米爲單位增加它以找到合適的尺寸。當它穩定並正常運行時,需要額外增加32米以留出一些額外的空間用於長時間運行。

+1

-XX:MaxPermSize作爲名稱暗示其允許的最大值,但不是必需的將使用的值。並注意到permGen空間不應該隨着時間增長。 –

+1

如果您不確定正確的尺寸,很容易導致不必要的大內存預留設置。順便說一句。並非所有類都與應用程序啓動一起加載。 – Lexandro