【问题标题】:Can we increase the priority of the Garbage collection thread in java我们可以在java中增加垃圾收集线程的优先级吗
【发布时间】:2011-01-08 18:07:43
【问题描述】:

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

【问题讨论】:

  • 每个 JVM 实现垃圾回收的方式都不同。您具体使用的是哪个 JVM?
  • 您尝试这样做的原因是什么?
  • 您希望最小化内存开销。您可以在命令行上调整 GC,但通常您不会看到应用程序的任何改进(尽管您可能会使情况变得更糟)

标签: java


【解决方案1】:

有很多命令行开关决定了 Sun 的 JVM 中的垃圾收集行为。

这有点复杂,但这里记录了它们: http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      有关更多详细信息,请参阅此 SO question

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-18
        • 1970-01-01
        • 1970-01-01
        • 2011-01-26
        相关资源
        最近更新 更多