java - 以尽可能少的线程初始化 JVM

标签 java linux multithreading jvm

我有一个简单的 java hello world 程序,带有 sleep

Java 代码:

    public class Main {
    public static void main(String[] args) throws InterruptedException {
        Thread.sleep(100000l);
     }
   }

使用javac编译

javac Main.java

运行使用

java Main

现在,如果我在 jvisualvm 中看到这 11 个线程。
为什么要启动 RMI 线程?
我如何启动一个只有基本线程的 jvm?

我为什么要这样做是因为受到 limit.conf 中的 nproc 限制的约束,并且想同时运行 maximun jvm。这些 jvm 也很短暂。

我正在使用 Oracle jdk 7

enter image description here

最佳答案

如果我告诉您这些线程对您来说没有任何意义,您会相信我吗?

它们要么是 VisualVM 用来与您的程序对话的基础结构的一部分,要么是 JVM 本身的一部分。它们都不能安全消除,也不应该;他们正在执行 VM 后台任务,因此您不必担心。

基本上,不用担心,它们在比 hello-world 大得多的程序中提供的开销是没有意义的。

如果您想知道它们是什么,引用管理器 只是管理当前内存中的对象,finalizer 是垃圾的一部分集电极。简而言之,您不应该担心的事情。

关于java - 以尽可能少的线程初始化 JVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31764567/

相关文章:

java - 如何将某些条件从二进制文件写入文本文件

Python 非阻塞读取命令

c++ - DirectX 10 IDXGISwapChain::GetBuffer 多线程 CTD 错误

java - 安卓应用开发: How do change content on screen depending on event

java - "master preferences"类是个好主意吗?

java - 提取十六进制数的第三位

linux - 在 Linux 上 - 如何获取特定分区的硬盘序列号?

php - 为什么不将 phpinfo 与 php5.ini 一起使用?

c# - 检查是否至少有一个线程已完成

Android:使用定时器定期执行任务