2014-12-31 79 views
4

我有一個非常重要的進程運行。我無法阻止它,需要擴大java進程的大小! 有沒有什麼辦法可以在線(在運行時)增加我的java進程的大小?是否有可能增加一個Java進程的(當正在運行)大小?

+2

你是什麼意思「process'size」?堆大小?堆棧大小? – kraskevich

+0

我的意思是他們倆。 –

+0

你怎麼知道你需要增加「工藝尺寸」?是否遇到任何錯誤,或者您是否只是觀察系統/堆的使用情況,並擔心它會變得「滿」? – Mikaveli

回答

5

您可以在運行過程中增加以下內容。

  • 數量的線程通過堆疊使用
  • 量的存儲器(但單獨的堆棧的最大大小)
  • 用量
  • 量的存儲器本地存儲器的映射文件映射到內存
  • 共享庫。

但是你不能做的是增加最大堆大小。這是最大的意義。從技術上講,這是因爲整個堆必須是單個連續的內存區域,增加限制無助於此。

+2

當你說*增加*時,你的意思是*訪問更多這個*資源的權利? – TheLostMind

+0

@TheLostMind是的,更多這些會增加過程的大小。 –

+1

只是確認:)所以,我們不能*明確*要求增加本地內存或堆棧權限? OS *通過分配內存以及它看起來合適的方式來增加進程的大小。對? – TheLostMind

-1

您可以增加堆大小,但該配置取決於IDE。 例如:Eclipse的編輯的eclipse.ini有

-Xms<size> - 2048m 
-Xmx<size> - 2048m 

根據您的RAM大小。

希望這會有所幫助。

+4

設置這些JVM選項不會更改_running_ Java應用程序... – Mikaveli

+0

但在其中一個意見中,他的意思是堆大小 –

1

命令行參數-Xmx設置最大Java堆大小(mx)。所有Java對象都是在Java堆上創建的,但是JVM進程的總內存消耗量不僅僅包含Java堆。舉幾個例子:

  • 生成(JIT:ED)代碼
  • 加載庫(包括罐和類文件)用於Java堆
  • 控制結構
  • 線程堆棧
  • 用戶本地存儲器( malloc:在JNI中編輯)

在確定應在單個服務器上運行多少個進程以及設置maxi時需要考慮這一點很重要媽媽堆大小。通常情況下,堆是進程空間的最大部分,但進程的總大小也取決於您的應用程序。

保留!=致力於

這是很容易由數保留(或映射)內存驚慌,但直到它的內存是致力於一個過程不使用任何物理內存資源。

所以我建議你不要增加-Xmx大小,而要遵循Peter Lawrey提供的解決方案!

相關問題