正如我们在java中所知,我们有线程的优先级,垃圾收集器是优先级最低的线程。所以我想知道对于特定的Java应用程序是否可以让它的垃圾收集器更加优先,以便它可以增加该应用程序的内存管理。
答案 0 :(得分:3)
有许多命令行开关可以确定Sun的JVM中的垃圾收集行为。
它有点复杂,但它们在这里记录: http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html
答案 1 :(得分:2)
基本上,您希望垃圾收集器尽可能少地消耗系统资源,除非您有充分的理由不这样做,否则应该保留系统默认设置,因为JVM更改或升级可能会使您的调整无效。
因此,我建议您不要使用垃圾收集设置。如果您有充分的理由这样做,请相应地编辑您的问题。
答案 2 :(得分:1)
不要依赖守护程序线程的优先级来完成工作。假设java具有10级线程优先级,但是当它映射到本机OS线程(比如具有170级优先级的Solaris)时,优先级将被重新映射。此外,Windows NT具有这样一种特殊习惯,即每个CPU周期不确定地增加线程优先级。尝试使用线程优先级控制应用程序流可能会导致可移植性问题。
有关详细信息,请参阅此SO question
根据JVM的实现,较高优先级的线程仍然可以在时间切片方案中抢占较低优先级的线程。时间切片的添加混合了相同优先级的线程之间的处理;在多处理器机器上,线程甚至可以同时运行。不幸的是,此功能可能会导致应用程序行为的差异。