2009-07-17 2 views

ответ

2

Я не уверен, что именно то, что вам нужно, просто доступно.

JPDA (архитектура отладки Java-платформы) позволяет создавать отладчики, поэтому является хорошей отправной точкой, если вы хотите вникать в внутренности. Есть blog on the JPDA, что также может оказаться полезным. Обратитесь к Sun Developer Network JPDA page за ссылки на документацию, часто задаваемые вопросы, примеры кода и форумы.

Два интерфейса, которые могут быть хорошими отправными точками являются:

  • com.sun.jdi.ObjectReference: экземпляр java.lang.Class из мишени В.М.
  • com.sun.jdi.VirtualMachine : виртуальная машина целевой для отладки
0

Я не думаю, что существует такой механизм, и нет реальной причины, по которой GC понадобится.

+0

GC должен знать, какие ссылки существуют для объекта, чтобы знать, собирать ли его мусор или нет. – notnoop

+3

@msaeed: Нет, GC должен знать, ссылается ли объект или нет, ему не нужно ничего знать о том, какие объекты хранят ссылку, если он находит одну ссылку во время отметки (в зависимости от стратегии gc, конечно) объекты остаются живыми и что все, что ему нужно знать. – Fredrik

+1

@Fredrik: Итак, как вы объясняете круговые ссылки, собираемые мусором? – zakovyrya

2

Если вы ищете утечку памяти, я считаю, что анализ кучи свалок с Eclipse MAT будет очень полезным. Вы можете выбрать объект и запросить пути к «GC-корням», т. Е. Показать мне все цепи ссылок, которые не позволяют этому объекту собираться мусор.

0

Это зависит немного от того, как вы хотите использовать его, но если вам это нужно, чтобы анализировать использование памяти, принимая heapdump и открыть его в MemoryAnalyzer или JHat, вероятно, даст вам необходимую вам информацию. Различные способы получения кучи можно найти here.

0

GC не поддерживает это, хотя API JDPA это делает. Но я бы очень осторожно относился к подобным вещам в приложении Java. Это, вероятно, будет чрезмерно дорогостоящим как во времени, так и в памяти.