我即將部署一個應用程序到現場服務器,現在我在我必須爲jvm設置堆和permgen大小的部分。我看過很多文章,他們都說「將最小堆大小設置爲(某個數)」,並將「最大堆大小設置爲(某個數)」,但這些文章都沒有說明爲什麼需要設置最小堆大小。我理解設置最大堆大小的原因,但不是最小值。如果你對此有所瞭解,我會很感激。我真的需要定義java最小堆大小
6
A
回答
6
Java中的堆是一般的內存分配區域。讓我們假設我們將最小堆大小設置爲1000字節(這是一個荒謬的低數字)。現在讓我們說我在我的程序中實例化一個包含一些長度爲兩千個字符的文本的對象。如果不首先擴展我的堆大小,我無法保存此對象。現在,據推測我的最大堆參數足夠大,以允許這 - 但這是設置最大堆大小的原因。
但是,假設我的服務器有4G內存,並且我設置了最小堆大小。 (一個荒謬的數字。)如果沒有其他程序佔用任何內存,這將工作。但是,如果我用我的java程序啓動第二個進程,它將無法分配足夠的內存並退出。
最小尺寸爲你做兩件事;首先,它使內存可以快速啓動以實現快速啓動。其次,它可以讓你調整你的jvm,讓你有一些不變量,讓你預測你可以運行多少個進程。如果您的最小堆大小過大,那麼您可能會浪費內存,從而永遠不需要那麼多,從而限制了系統的容量。如果將其設置得太小,程序啓動需要很長時間,對進程的性能產生負面影響。
1
設置最小堆大小允許Java預先分配一些內存,從而縮短啓動時間。
1
顯式設置最小大小(高於默認值)有助於在操作系統級別分配碎片並啓動時間性能。
Java堆由OS分配的內存支持,初始塊越大,將發生的重新分配和碎片越少。
設置最小值等於或幾乎等於最大值,將完全消除這些情況。
相關問題
- 1. 爲JBoss指定最佳的最小和最大堆大小
- 2. 固定大小堆棧Java
- 3. Cassandra最小堆大小
- 4. 爲什麼你需要指定Java堆大小?
- 5. 的Java堆大小
- 6. 預留Java JVM最大堆大小
- 7. java集最大堆棧大小
- 8. 堆中Java最大對象大小
- 9. Nexus的最大堆大小?
- 10. 定義最大RelativeLayout大小
- 11. 關於堆(最大堆和最小堆)
- 12. Netbeans堆大小java
- 13. Java堆/池大小
- 14. -Xms:初始堆大小或最小堆大小?
- 15. 爲什麼Java堆的最大大小是固定的?
- 16. 最大堆大小無效
- 17. 在Java中,如何找出我的最大堆大小?
- 18. java堆設置中的最大堆大小的限制
- 19. 有沒有最小的堆大小
- 20. 創建最小堆或最大堆
- 21. 增加Java小程序的堆大小
- 22. JMP中的Java堆大小
- 23. Java堆大小的使用
- 24. android如何爲應用程序定義最大堆大小?
- 25. JAVA:需要計算對象大小(堆轉儲可用)
- 26. 爲什麼要減小Java JVM線程堆棧的大小?
- 27. JVM最小堆大小推薦原因?
- 28. 我需要增加可能的最大數組大小
- 29. 需要幫助確定用戶輸入的最大和最小
- 30. Android Studio 1.5.1 - 無效的最大堆大小:-Xmx4g指定的大小超過最大可表示大小
那麼爲什麼你會設置一個下限呢?因爲你的程序可能需要一定的金額。我誤解了這個問題嗎?你的意思是說min設置實際上是必需的嗎? – keyser
可能的重複[設置最小Java堆大小的原因是什麼?](http://stackoverflow.com/questions/8085949/whats-the-reason-to-set-a-minimal-java-heap-size) – assylias