Как увидеть все строковые объекты в visualvm? - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь узнать, как использовать профилировщики Java, и я выбираю VisualVM для него.В данный момент я не понимаю, как это работает, чтобы увидеть объекты в куче.Например, я объявляю три объекта

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    while (!scanner.nextLine().equals("q")) {
        String s1 = "cat";
        String s2 = new String("cat");
        String s3 = new String("cat9");
    }

}

Итак, есть один «кот» в пуле строк, «кот» и «кошка 9» в куче как объекты String.Но когда я делаю дамп кучи в VisualVM и нахожу все строки "cat" с

select s from java.lang.String s where s.toString().substring(0,3) == "cat"

, я вижу только два объекта: "cat" и "cat9".Разве не должно было быть двух «котов»: один в пуле строк, другой в куче?

...