Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我们可以提高java中垃圾收集线程的优先级吗_Java - Fatal编程技术网

我们可以提高java中垃圾收集线程的优先级吗

我们可以提高java中垃圾收集线程的优先级吗,java,Java,正如我们在java中所知道的,线程有一个优先级级别,而垃圾收集器是一个优先级最低的线程。所以我想知道,对于一个特定的java应用程序,我们是否可以对其垃圾收集器进行更高优先级的排序,以便它可以增加该应用程序的内存管理。在Sun的JVM中,有许多命令行开关决定垃圾收集行为 这有点复杂,但这里有记录: 基本上,您希望垃圾收集器消耗尽可能少的系统资源,除非您有充分的理由这样做,否则您应该保留系统默认设置,因为JVM更改或升级很可能会使您的调整无效 因此,我建议您不要修改垃圾收集设置。如果您有很好的理由

正如我们在java中所知道的,线程有一个优先级级别,而垃圾收集器是一个优先级最低的线程。所以我想知道,对于一个特定的java应用程序,我们是否可以对其垃圾收集器进行更高优先级的排序,以便它可以增加该应用程序的内存管理。

在Sun的JVM中,有许多命令行开关决定垃圾收集行为

这有点复杂,但这里有记录:

基本上,您希望垃圾收集器消耗尽可能少的系统资源,除非您有充分的理由这样做,否则您应该保留系统默认设置,因为JVM更改或升级很可能会使您的调整无效


因此,我建议您不要修改垃圾收集设置。如果您有很好的理由这样做,请相应地编辑您的问题。

不要依赖守护进程线程的优先级来完成工作。假设java有10级线程优先级,但当它映射到本机OS线程(比如Solaris有170级优先级)时,优先级被重新映射。此外,WindowsNT有一个特殊的习惯,即通过每个CPU周期不确定地增加线程优先级。尝试使用线程优先级控制应用程序流可能会导致可移植性问题

有关更多详细信息,请参阅本说明


根据JVM的实现情况,在时间切片方案中,高优先级线程仍可能抢占低优先级线程。时间切片的添加混合了具有相同优先级的线程之间的处理;在多处理器机器上,线程甚至可以同时运行。不幸的是,此功能可能导致应用程序行为的差异

每个JVM都以不同的方式实现垃圾收集。具体来说,您使用的是哪个JVM?您尝试这样做的原因是什么?您希望将内存开销降至最低。您可以在命令行上调优GC,但通常您看不到应用程序运行方式的任何改进(尽管您可以使其变得更糟)