java程序有多个类的如何运行_当多个Java程序在同一台机器上运行

1)如果我有一个用java编写的web服务,它将需要一个JVM实例来运行。 那么JVM可以成为一个守护进程吗?

是的,它可以。 如何完成取决于操作系统和Web服务器容器本身。

2)如果是,当我们运行任何其他的Java应用程序,它会使用这个JVM的实例或创build一个新的?

不是。每个Java应用程序都使用独立的JVM。

每个JVM都是一个独立的进程,这意味着没有共享堆栈,堆等等。 (通常,可以共享的唯一的东西是只读段,它们包含核心JVM和本地库的代码……就像正常进程可能共享代码段一样。

3)任何机器的主内存都是恒定的。 当我们同时启动n个java进程而没有提供任何初始堆大小的时候,堆进程的大小是如何分布的?

如果不指定大小,则决定堆的大小取决于所使用的JVM /平台/版本以及是否使用“客户机”或“服务器”模型(用于热点JVM)。 启发式不考虑其他JVM的数量或大小。

参考: https : //stackoverflow.com/a/4667635/139985

实际上,直接指定堆大小可能会更好。

4)是否有任何进程pipe理n个JVM实例,还是由操作系统本身pipe理?

都不是。 JVM实例的数量取决于可以启动进程的各种操作; 例如守护进程脚本,命令脚本,在命令行input命令的用户等等。 最终,如果操作系统耗尽资源,操作系统可能会拒绝启动更多的进程,但JVM不会与其他进程有任何不同。

5)当一个GC期间停止世界发生其他JVM实例(我假设不同的线程)受到影响?

不。JVM是独立的进程。 他们不共享任何可变状态。 垃圾收集在每个JVM上独立运行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java的ManagementFactory和RuntimeMXBean接口来获取正在运行Java进程的相关信息。具体步骤如下: 1. 使用ManagementFactory的getRuntimeMXBean()方法获取RuntimeMXBean对象。 2. 调用RuntimeMXBean对象的getInputArguments()方法获取正在运行Java进程的启动参数列表。 3. 遍历启动参数列表,找到包含"-jar"关键字的参数,这些参数对应的值就是正在运行Java程序的jar包路径。 4. 根据jar包路径,可以进一步判断出Java程序的名称等信息。 下面是一个简单的示例代码: ```java import java.lang.management.ManagementFactory; import java.lang.management.RuntimeMXBean; import java.util.List; public class RunningJavaProcesses { public static void main(String[] args) { // 获取RuntimeMXBean对象 RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean(); // 获取正在运行Java进程的启动参数列表 List<String> inputArguments = runtimeMXBean.getInputArguments(); // 遍历启动参数列表,找到包含"-jar"关键字的参数 for (String arg : inputArguments) { if (arg.startsWith("-jar")) { // 解析出jar包路径 String[] parts = arg.split(" "); String jarPath = parts[1]; // 进一步判断Java程序的名称等信息 String[] nameParts = jarPath.split("/"); String processName = nameParts[nameParts.length - 1].replace(".jar", ""); System.out.println("Java程序 " + processName + " 正在运行"); } } } } ``` 注意,这种方法只能判断正在使用jar包运行Java程序,对于其他型的Java程序可能无法准确判断。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值