Я пытаюсь узнать, как использовать профилировщики 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".Разве не должно было быть двух «котов»: один в пуле строк, другой в куче?