1) If I have a web service written in java it will need a JVM instance to run. So can JVM be made a daemon process?
是的,它可以。如何完成取决于O / S和Web服务器容器本身。
2) If yes when we run any other java application it will use this instance of JVM or create a new one?
不是。每个Java应用程序都使用独立的JVM。
每个JVM是一个单独的进程,这意味着没有堆栈,堆等的共享。 (通常,可能共享的唯一的事情是只读段,它们包含核心JVM和本机库的代码…与正常进程可能共享代码段的方式相同。)
3) Main memory available in any machine is constant. When we start n java processes simultaneously without providing any initial heap size how is the heap size distributed among processes?
如果不指定大小,决定创建堆的大小的机制取决于您使用的JVM /平台/版本,以及是使用“客户机”还是“服务器”模型(对于热点JVM)。启发式方法不考虑其他JVM的数量或大小。
在实践中,你最好直接指定堆大小。
4) Is there any process that manages n number of JVM instances or is it managed by OS itself?
也没有。 JVM实例的数量由可以启动进程的各种操作的操作决定;例如守护程序脚本,命令脚本,在命令行中键入命令的用户等。最终,如果操作系统耗尽资源,则操作系统可以拒绝启动任何更多的进程,但是JVM与其他进程没有任何区别。
5) When stop-the-world happens during an GC are other JVM instances(different threads I assume) affected?
不.JVM是独立的进程。它们不共享任何可变状态。垃圾收集独立地在每个JVM上操作。