加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何检查堆内存中创建的对象数?

发布时间:2020-12-15 02:09:56 所属栏目:Java 来源:网络整理
导读:我想看看在运行程序时 Java创建了多少个对象. 我的意图是如果我使用代码String s = new String(“Hi”);我想看看Java将创建多少个对象.后来我想尝试使用String news =“Hi”; 这是我的示例程序: import java.util.Scanner;public class Test { public stati
我想看看在运行程序时 Java创建了多少个对象.

我的意图是如果我使用代码String s = new String(“Hi”);我想看看Java将创建多少个对象.后来我想尝试使用String news =“Hi”;

这是我的示例程序:

import java.util.Scanner;

public class Test { 
    public static void main(String[] args) {
        String str = new String("Hi");
        Scanner s = new Scanner(System.in);
        s.nextLine();
    }
}

我正在使用Scanner来避免程序终止.

我已经经历了这个SO How to find the number of objects in the heap并尝试使用jvisualvm,但该工具没有给出我班上创建的对象的计数.我也不明白如何根据下图获得实际的物体数量.

enter image description here

当我尝试使用命令jmap -heap< pid>然后我得到以下错误:

Attaching to process ID 15101,please wait… Error attaching to
process: sun.jvm.hotspot.debugger.DebuggerException: Can’t attach to
the process

如果我使用eclipse Debug作为选项,那么我发现它不是找出正在创建的对象数量的正确方法.

解决方法

如果您查看调试器,您可以看到它

enter image description here

String @ 437对象在s1 s2 s3中是相同的,但这是指char [2] @ 438,它是另一个对象.因此,您有两个对象.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读