有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

可以读取正在运行的java应用程序的内存吗?

我想学习如何(或者如果可能的话)通过编程与黑盒java应用程序交互(通过读取其数据)。以前有没有做过这样的研究/工作

我认为在JVM上运行会使事情变得非常复杂

@anon:这与任何JVM都相关。您必须知道或控制JVM如何分配内存以从java应用程序提取数据的细节吗


共 (5) 个答案

  1. # 1 楼答案

    你可以调查一下。只要您了解应用程序的类结构,它将允许您修改已经运行的JVM中的方法,并且您可能能够设计一种方法,允许您提取或插入足够的数据以进行通信(当然,这取决于可用的方法)

  2. # 2 楼答案

    麦吉尔大学的Sable小组为Java世界贡献了大量研究

    很多工作都已经过时了,但是您可能会在他们的EVolve项目中找到一些帮助,该项目的目标是可视化面向对象的程序。他们的一些项目似乎得到了积极的维护(比如Soot,他们的Java优化框架),所以你可能会发现直接联系他们很幸运

  3. # 3 楼答案

    HotSpot JVM允许您从探查器(参见Open Source Java Profilers或类似Your Kit的商业广告)连接agentlib,然后您可以在探查器中检查内存/cpu/线程等。 如果您想要非常具体的东西,您可能需要制作自己的agentlib,它可以向您发送所需jvm的信息

  4. # 4 楼答案

    例如,使用StackTrace很容易做到这一点。它可以附加到java进程,让您使用BeanShell检查和更改几乎所有内容

  5. # 5 楼答案

    我相信你要找的是Eclipse MAT的功能。您可能想看看源代码