是否可以更改垃圾收集器线程的优先级?

Java垃圾收集器以优先级1运行,因此无法保证System.gc()在被调用时实际执行。

有没有办法改变它的优先级? 这将使我能够运行,如果我想。

垃圾收集器是一个独立的线程(由Tom Hawtin在评论中提醒,甚至不一定是单个线程)并且具有由Java虚拟机决定的优先级。 这意味着您无法强制进行垃圾回收。 调用System.gc()告诉运行时环境“现在”可能是运行GC的好时机,但实际上不能保证垃圾收集立即完成。

即使您将线程优先级提高到11 System.gc也不能保证任何内容。 您可以确定的是,如果Java需要GC,它会抛出内存不足exception。

GC将根据需要运行。 您不需要手动调用它。 如果你不喜欢它运行时你可以用命令行参数控制它。

如果您认为GC的行为有问题,您应该尝试修复原因而不是尝试编写自己的工作。

总之,您应该告诉我们您关注的真正原因是什么,以便我们能够解决这个问题。

创建线程时,它会inheritance创建它的线程的优先级。 可以使用调整线程的优先级

public final void setPriority(int newPriority)

问题是线程没有“运行”垃圾收集器。 垃圾收集器由VM运行(当Java想要或处于“好心情…… :)”时。

编辑:GC不是一个线程,而是一个运行时线程的方法。 您可以更改运行时线程的优先级,但这对GC没有影响。 调用GC的线程是VM的一个线程,不在API的范围内,因此您无法更改其优先级。

所以,我真的认为你不能确定它的优先级。