Я изучаю Java, при поиске данных я часто вижу картинки, которые описывают распределение памяти во время работы программы. Просто как:
Описание полиморфизма
Описание наследования
В сочетании со статьей я могу понять картину. Но я хочу знать, есть ли какой-либо метод или команда, которая позволяет мне видеть состояние распределения памяти в jvm, когда запущена java-программа?
Я пытался отладить свою программу, используя jdb
, но она не давала мне статус выделения памяти в jvm.
Ниже приведен мой тестовый код, мне просто нужен простой пример, используйте некоторые команды или методы, чтобы увидеть распределение памяти jvm при запуске этого кода.
Структура каталогов проекта
.
├── src
│ └── com
│ ├── Index.java
│ └── libs
│ ├── Cat.java
│ ├── Dog.java
│ └── ext
│ └── Animal.java
Animal.java
package com.libs.ext;
public class Animal {
public void eat() {
System.out.println("Animal is eating");
}
}
Dog.java
package com.libs;
import com.libs.ext.Animal;
public class Dog extends Animal {
public void eat() {
System.out.println("Dog is eating");
}
}
Cat.java
package com.libs;
import com.libs.ext.Animal;
public class Cat extends Animal {
public void jump() {
System.out.println("Cat is jumping");
}
public void eat() {
System.out.println("Cat is eating");
}
}
Index.java
package com;
import com.libs.Cat;
import com.libs.Dog;
import com.libs.ext.Animal;
public class Index {
public static void doEat(Animal animal) {
animal.eat();
}
public static void main(String[] args) {
Dog d = new Dog();
Cat c = new Cat();
Index.doEat(d); //Dog is eating
Index.doEat(c); //Cat is eating
c.jump(); //Cat is jumping
}
}