如何减少jvm使用的线程数

Joh*_*han 4 java jvm

我在以下java版本上运行单线程Java应用程序:

java version "1.7.0_67"
Java(TM) SE Runtime Environment (build 1.7.0_67-b01)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)
Run Code Online (Sandbox Code Playgroud)

-XX:+UseSerialGC启用该选项.仍然在我启动应用程序时,我看到在监视系统时启动了多个线程htop.我想尽可能减少启动的进程数,因为我有一个用例,它涉及运行此应用程序的多个实例,这将触及我正在运行的系统上允许的最大进程数量上.除了-XX:+UseSerialGC我可以用来减少线程数量的其他jvm选项吗?

apa*_*gin 9

除了-XX:+UseSerialGC禁用Parallel或Concurrent GC之外,还有以下选项可以减少JVM线程的数量:

  • -XX:CICompilerCount=1 只留下一个JIT编译器线程.
  • -XX:+ReduceSignalUsage禁用Signal Dispatcher线程.例如,JVM不会处理SIGQUIT来转储线程.
  • -XX:+DisableAttachMechanism 阻止AttachListener线程启动.

从理论上讲,可以禁用更多线程(例如服务线程和VM周期任务线程),但这需要修补JVM.