Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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_Garbage Collection - Fatal编程技术网

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

我们可以用java定制垃圾收集器吗?,java,garbage-collection,Java,Garbage Collection,正如我们所知,java的垃圾收集器是一个低优先级线程。在java中,我们可以创建任何具有高优先级的线程。因此,是否有可能拥有我们自己的具有可变优先级的定制垃圾收集器线程(我们可以根据内存管理级别进行设置) 有人试过吗。如果是,你能分享一些关于如何和其逻辑的知识吗? 谢谢我相信您必须部署自己的JRE/JVM。在Java中,没有办法关闭默认的垃圾收集 Java 7将使用一个全新的GC,因此应该可以将它们交换掉。Java的垃圾收集器不是“低优先级线程”。例如,垃圾收集通常并行使用多个线程。而且,当内存

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

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

我相信您必须部署自己的JRE/JVM。在Java中,没有办法关闭默认的垃圾收集


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

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


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

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

但我认为更可能的是,无论您认为垃圾收集器有什么问题,都是应用程序中的问题。还有一些猜测:

  • 您正在不必要地创建和丢弃大量对象
  • 你有内存泄漏
  • 应用程序中存在性能问题
  • 你有不可能的绩效预期

是的,您可以,但它需要您做一些相当核心的JVM工作,因为您无法从运行的Java程序中完成。最简单的入门方法可能是使用Jikes RVM,因为它是用Java编写的(一个IBM开源项目)


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

你为什么要这么做?GC的工作做得还不够好吗?然后在sun.com上提交一个问题:)我只是想知道我们可以用一些好的优先级来模拟它吗?模拟是为单元测试完成的。单元测试不测试性能。我不相信这是一个明智的做法。你为什么要这么做?更高的优先级并不意味着内存耗尽的可能性更小。GC总是,总是,总是被称为最后手段。如果失败了,那么要么代码效率低下,要么实际上需要更多内存。谢谢你,巴鲁克。。对此有一个想法,所以我想澄清一下我们是否能做到这一点。有多种不同的垃圾收集器可供选择,但是您可以选择最适合您的应用程序的垃圾收集器。的确,与JVM捆绑在一起的垃圾收集器经过了多次修订和升级。您最好的选择是分析您的应用程序。此外,与性能相关,您可以尝试将JVM设置为服务器模式而不是客户端模式;这可以提高性能。看见