在 Unix 系统上,您可以以较低的 CPU“优先级”运行进程(迂腐地说,它不会改变所谓的“优先级”)priority
,而是影响可用 CPU 时间的使用份额,这是一般意义上的“优先级”)使用nice
命令:
nice program
您可以使用它来运行 JVM 进程:
nice java -jar program.jar
该 JVM 进程运行的 Java 程序将启动多个线程。
是否nice
改变会影响那些Java线程的调度吗?也就是说,Java 线程在运行时是否具有较低的 CPU 优先级
nice java -jar program.jar
当运行为
java -jar program.jar
一般来说,这取决于系统,所以我对 Linux 案例感兴趣。
根据什么ps
报告niceness应用于java线程。我使用等待用户输入的 java 应用程序运行了这个快速测试:
开始流程:nice -n 19 java Main
输出ps -m -l 20746
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 - 1000 20746 10006 0 - - - 1739135 - pts/2 0:00 java Main
0 S 1000 - - 0 99 19 - - futex_ - 0:00 -
1 S 1000 - - 0 99 19 - - wait_w - 0:00 -
1 S 1000 - - 0 99 19 - - futex_ - 0:00 -
1 S 1000 - - 0 99 19 - - futex_ - 0:00 -
开始流程:nice -n 15 java Main
输出ps -m -l 21488
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 - 1000 21488 10006 0 - - - 1722494 - pts/2 0:00 java Main
0 S 1000 - - 0 95 15 - - futex_ - 0:00 -
1 S 1000 - - 0 95 15 - - wait_w - 0:00 -
1 S 1000 - - 0 95 15 - - futex_ - 0:00 -
1 S 1000 - - 0 95 15 - - futex_ - 0:00 -
The NI
专栏似乎反映了我传递给的内容nice
并且优先级也会相应变化。我使用以下命令获取了进程 ID (20746, 21488)jps
.
请注意,运行jstack 21488
例如不会给出上述信息。
我在 Ubuntu 16.04 LTS(64 位)上运行了上面的代码
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)