簡體   English   中英

在Java進程之間共享核心庫

[英]Share core library between Java processes

有沒有辦法在Java進程之間共享核心庫(或其他方式來最小化JVM初始內存影響)

所以這是我的情況。 我正在玩微服務。 我跑了不少他們。 我將它們的堆設置為128M因為它足夠了。 但我注意到Linux進程消耗得更多。

如果從這里我理解正確的話

Max memory = [-Xmx] + [-XX:MaxPermSize] + number_of_threads * [-Xss]

雖然我使用的是Java 8,但是燙發大小可能不再是問題了嗎? 或者是它。

最初的“核心”JVM內存占用......我想知道你是否聽說過以某種方式在進程之間共享“核心”內存(因為它實際上是相同的)。 或者在運行java的許多進程時以任何方式處理額外的成本。

從概念上講,您在詢問是否可以fork JVM - 因為分叉(通常)使用寫時復制內存語義,這可以是一種有效的節省空間的措施。 不幸的是,正如本回答中所討論的那樣,不支持分支JVM,並且通常不實用。 非Unix系統無法有效分叉,並且分叉JVM必須以凌亂的方式解決許多其他副作用。 從理論上講,你可能會分叉一個JVM進程,但你正在走向“未定義的行為”領域。

避免JVM啟動成本的“正確”方法是減少首先啟動所需的JVM數量。 Java是一種高度並發的語言,支持通過其線程模型對開箱即用的公共內存進行共享訪問。 如果您可以重構代碼以在同一JVM中並發運行,那么您將看到更好的性能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM