如何从一个 JVM 进程获取有关不同 java 进程(运行不同进程的另一个 JVM 实例)的信息?
我正在编写单元测试来查找 MyClass 实例占用了多少内存。 我似乎无法对随机混沌垃圾收集器做任何事情,它告诉我我的 MyClass[] myinstances=new MyClass[10000];
占用了负内存,所以我决定启动 2 个新的JVM 进程只是启动一个包含 main 方法的类,该类实例化一个巨大的数组并挂起。
我知道我可以使用 Runtime.getRuntime.exec("java my.package.SomeClassWithMainMethod"); 启动一个新的 JVM
所以我的问题是:如何获取有关占用内存量的信息由我启动的 JVM 启动?
谢谢,你们统治。
I'm writing unit tests to find just how much memory instances of MyClass take up.
I can't seem to do anything about the random chaotic garbage collector that tells me my MyClass[] myinstances=new MyClass[10000];
takes up negative memory, so i decided to just start up 2 new JVM processes which simply start a class containing a main method, that instantiates a huge arry and hangs.
I know i can start up a new JVM with Runtime.getRuntime.exec("java my.package.SomeClassWithMainMethod");
So my question is: how do i get the info about the ammount of memory taken up by the JVM i started?
Thx, you guys rule.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用 JVisualVM 或 JConsole ,它们从 1.6 开始就包含在 JDK 中
You can use JVisualVM or JConsole , they are included in the JDK since 1.6
我认为你最好使用分析器,jvisualvm 可能足够好并且随你的 Java 发行版一起提供。请参阅这个问题:如何确定实际内存数据结构的使用
I think you are better off using a profiler, jvisualvm is probably good enough and comes with your Java distribution. See this question: How to determine the actual memory usage of a data structure