我们可以在java中定制垃圾收集器吗?

我们知道java的垃圾收集器是一个低优先级的线程。 在java中,我们可以创建任何具有高优先级的线程。 因此可以拥有我们自己的具有可变优先级的自定义垃圾收集器线程(我们可以根据内存管理级别进行设置)。

有人试过吗 如果是,你可以分享一些关于如何及其逻辑的知识吗? 谢谢

Java的垃圾收集器不是“低优先级线程”。 例如,垃圾收集通常并行使用多个线程。 并且,当内存不足时,垃圾收集可以抢占任何应用程序线程。

我建议研究垃圾收集调整指南,以确定最适合应用程序的垃圾收集器类型,以及如何调整其参数。

Java中的垃圾收集已经过多年的精心调整。 你可能会做一些非常特殊的事情,但在这方面有特殊需要。

但我认为更有可能的是,您认为垃圾收集器遇到的任何问题都是您的应用程序中存在的问题。 更多猜测:

  • 您不必要地创建和丢弃了很多对象。
  • 你有内存泄漏。
  • 您的应用程序中存在性能问题。
  • 你有不可能的表现期望。

是的,你可以,但它需要你做一些相当硬的核心JVM工作,因为你不能从正在运行的Java程序中做到这一点。 最简单的入门方法可能是使用Jikes RVM,因为它是用Java编写的(一个IBM项目已经开源)。

http://jikesrvm.org/

玩得开心,但期待一场艰苦的战斗:)

我相信你必须部署自己的JRE / JVM。 无法关闭Java中的默认垃圾回收。

Java 7将使用一个全新的GC,因此应该可以将它们交换掉。