gpt4 book ai didi

java - 减少 Solaris (UNIX) 上多个 Java 进程的内存占用

转载 作者:行者123 更新时间:2023-12-01 05:50:00 24 4
gpt4 key购买 nike

有没有办法让 Java 进程 fork 或启动另一个 Java 进程并使用共享内存以最大限度地减少 RAM 使用量?

为了能够安全地杀死一个进程而不影响其他进程,将会有很多进程。此外,如果线程位于单独的进程中,这还可以轻松检测哪些线程正在使用更多内存或 CPU。这应该允许任何进程发生崩溃或 OutOfMemoryError 而不影响其他进程。

如果我们可以同时运行 100-300 个 java 进程,每个进程都有自己的用途,那就太好了。我意识到,如果我们要避免从数据库和文件系统中掠夺太多内存,我们可能必须限制该数量并要求进程承担多个角色。

编辑:
我认为当我说共享内存时我表达了错误的含义。我的意思是可以在多个进程之间使用的内存,例如 Java 类(而不是变量)。如果可能的话,所有的java包和库都可以重用。

最佳答案

@George Baily - 刚刚看到你上面的评论。

是的,较新的 JVM 确实共享类文本,但据我了解,它仅在客户端(非服务器)JVM 中。这样做的好处是减少了 IO 和启动时间,而且还有助于减少占用空间。

您可以在这里阅读更多内容:

http://download.oracle.com/javase/1.5.0/docs/guide/vm/class-data-sharing.html

您可能还希望积极调整堆大小参数,以减少占用空间。虽然是半商业化的,但我维护了一个小型软件包,可以管理多个(数百个)JVM 的工作负载,并动态管理操作系统级 IO 和进程优先级,以满足工作负载目标。适用于 JVM 的穷人的 WLM。到目前为止,我未能成功地在运行时管理 JVM 人体工程学,但 WLM 方法的效果却出奇的好。如果您需要更多信息,请告诉我。

关于java - 减少 Solaris (UNIX) 上多个 Java 进程的内存占用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4963025/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com