Действительно ли возможно считать память под управлением JAVA-приложения?

Я хотел бы изучить, как, или если его возможные вообще к programmaticly взаимодействуют с JAVA-приложением черного ящика (путем чтения его данных). Было какое-либо предыдущее исследование/работа в области выполнения этого вида вещи?

Я предположил бы, что работа JVM значительно усложняет вещи.

@anon: Выполнение этого с любой JVM релевантно. Необходимо ли знать или управлять ли специфическими особенностями того, как JVM выделяет память для извлечения данных из JAVA-приложения?

15
задан Ari Ronen 29 June 2010 в 05:30
поделиться

5 ответов

Вы можете изучить java.lang.instrument . Если вы понимаете структуру классов приложения, это позволит вам изменять методы в уже работающей JVM, и вы можете придумать способ, который позволит вам извлекать или вставлять данные, достаточные для связи (зависит от методов в наличии, конечно).

3
ответ дан 1 December 2019 в 05:19
поделиться

Это легко сделать, например, с помощью StackTrace . Он может подключаться к процессу Java и позволяет вам проверять и изменять почти все с помощью BeanShell.

1
ответ дан 1 December 2019 в 05:19
поделиться

Я считаю, что вы ищете именно то, что делает Eclipse MAT . Вы можете взглянуть на исходный код ...

0
ответ дан 1 December 2019 в 05:19
поделиться

Группа Sable из Университета Макгилла внесла большой вклад в исследования мира Java.

Большая часть работы уже устарела, но вы можете найти некоторую помощь в их проекте EVolve , целью которого является визуализация объектно-ориентированных программ. Некоторые из их проектов, похоже, активно поддерживаются (например, Soot , их среда оптимизации Java), так что вы можете найти удачу, связавшись с ними напрямую

1
ответ дан 1 December 2019 в 05:19
поделиться

HotSpot JVM позволяет вам подключить agentlib из профилировщика (см. Open Source Java Profilers или рекламу типа Your Kit), в профилировщике вы можете просмотреть память, процессор, потоки и т.д.. Если вам нужны очень специфические вещи, вы можете сделать свой собственный agentlib, который будет посылать вам информацию о jvm, которая вам нужна.

0
ответ дан 1 December 2019 в 05:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: