如何减少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)
启用-XX:+UseSerialGC
选项。 当我启动应用程序时,我看到多个线程在使用htop
监视系统时启动。 我想尽可能减少启动的进程数,因为我有一个用例涉及运行此应用程序的多个实例,这将触及我正在运行的系统上允许的最大进程数量的上限上。 除了-XX:+UseSerialGC
之外是否还有其他jvm选项-XX:+UseSerialGC
我可以用来减少线程数量的开始?
除了-XX:+UseSerialGC
禁用并行或并发GC之外,还有以下选项可以减少JVM线程的数量:
-
-XX:CICompilerCount=1
只留下一个JIT编译器线程。 -
-XX:+ReduceSignalUsage
禁用Signal Dispatcher线程。 例如,JVM不会处理SIGQUIT来转储线程。 -
-XX:+DisableAttachMechanism
阻止AttachListener线程启动。
从理论上讲,可以禁用更multithreading(例如Service Thread和VM Periodic Task Thread),但这需要修补JVM。