[英]Limit Java CPU and Memory usage
我想創建一個Java應用程序,該應用程序可以限制每個線程的CPU和內存使用率。 假設它是一個Rest API,並且在每個請求和響應之間都有一個過程。 我想限制他們。 是否可以通過代碼動態地做到這一點?
下一個相關的問題是,如果我有一台分布式計算機,並且想再次對每個進程應用此CPU和內存限制,該怎么辦?
也許您可以推薦一些與此高級主題相關的書籍或博客。
謝謝
您可以使用JVM(Java虛擬機)參數來部分實現它-您可以設置線程的堆棧大小和JVM的堆大小。 但是不可能限制每個線程的內存。 有沒有辦法在Java中的每個線程上設置最大內存使用限制?
也無法限制CPU使用率限制Java應用程序的內存和cpu使用率
您可以通過Thread類中的setPriority()
在Java程序中設置線程優先級-但這很糟糕而且實際上沒有效果。
您還可以生成現在作為單獨進程(不是單獨線程)線程化的事物-具有固定的堆大小和自定義進程優先級(CPU使用率)。 但是您必須使多進程通信有效,而這需要一些知識(不要自己編寫,請使用一些已經經過測試的消息系統)。 該解決方案可能需要對當前代碼進行巨大的更改。
以下是個人意見
每當您有需要通過某種魔術(手動或通過代碼)設置優先級的應用程序時,應用程序體系結構就有99%的機會被設計破壞。
但為什么?
好吧,使JVM的人們花費了數年時間來開發最有效的線程管理解決方案。 您應該承認JVM更了解如何處理它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.