java垃圾调度器是否以某种形式描述了它的细节?

java垃圾调度器是否以某种形式描述了它的细节?,java,performance,memory-management,Java,Performance,Memory Management,在JVM中作为守护进程运行以垃圾收集对象的调度程序,可以用JMX监控吗?我们是否有办法判断这些是它现在可能进行垃圾收集的对象。这样我们就可以知道,如果我们正在创建类的特定对象,并且实例在内存中被保留,那么它们什么时候可以被垃圾收集,以及它们占用了多少内存。 还有一种方法可以告诉我的类的一个实例平均占用多少内存 我知道这个问题可能很愚蠢,但即使我们不能强制垃圾收集,我们能在运行时找出哪些对象没有被其他对象连接(换句话说,根本没有被使用)。我们能在运行时找到弱引用吗,有没有一种方法可以描述这一点。为

在JVM中作为守护进程运行以垃圾收集对象的调度程序,可以用JMX监控吗?我们是否有办法判断这些是它现在可能进行垃圾收集的对象。这样我们就可以知道,如果我们正在创建类的特定对象,并且实例在内存中被保留,那么它们什么时候可以被垃圾收集,以及它们占用了多少内存。 还有一种方法可以告诉我的类的一个实例平均占用多少内存


我知道这个问题可能很愚蠢,但即使我们不能强制垃圾收集,我们能在运行时找出哪些对象没有被其他对象连接(换句话说,根本没有被使用)。我们能在运行时找到弱引用吗,有没有一种方法可以描述这一点。

为此使用探查器-看一看。

您所问的是所谓的垃圾收集调优,它在web上有很多资源,例如

具体来说,有一些应用程序可以用来监视java应用程序(如VisualVM)内存的行为。您还可以通过向commnad行添加以下标志,使VM将所有垃圾收集打印到一个文件中:

 -verbose:gc
 -XX:+PrintGCTimeStamps
 -XX:+PrintGCDetails

然后使用分析应用程序(如ot)对其进行分析。

“即使我们不能强制垃圾收集”是的,我们可以
System.gc()guaranteed@Marian-不,我们不能,
System.gc()
不保证垃圾收集器何时运行。你真的是说“用JMS监控”吗?我怀疑您指的是JMX,因为它更适合这种监视;-)谢谢约阿希姆指出这一点。我只是指JMX。