一个JVM下有多个进程

man*_*ada -1 java memory jvm memory-management

我们可以在一个JVM中运行多个进程吗?而且每个进程都应该有自己的内存配额?

我的目标是在有新的http请求进入时启动新进程,并为进程分配一个单独的内存,以便每个用户请求都有自己的内存配额-如果一个人的内存配额已满,则不会打扰其他用户请求。

我该如何实现?

不知道这是否是假设。

Gho*_*ica 5

简短的回答:并非如此。

Java平台为您提供了两种选择:

  1. 线程。在许多情况下,这就是典型的答案:每个新的传入请求都由一个单独的线程处理(它可能从一个池中发出,以限制并行创建/使用的线程实例的总数)。但当然:线程存在于同一进程中;没有诸如通过线程正在执行的操作来“控制”关联的内存消耗这样的事情。
  2. 子进程。您可以创建一个真实的流程,并使用它来运行您打算运行的任何内容。但是,当然:您需要处理一个外部实际过程。

因此,从本质上讲,真正的答案是:不,您不能将此想法应用于Java。“更多”的Java解决方案将研究诸如应用程序服务器之类的概念,例如Tomcat或WebSphere。

或者,如果您坚持手动操作;您可以构建自己的“负载均衡器”;您有一个面向客户端的JVM;它只是将请求“转发”到许多其他JVM之一;那些“其他” JVM将独立工作;每个都在自己的进程中运行;然后,您当然可以对CPU /内存/ ...的使用进行“微管理”。