Как проверить состояние памяти при запуске Java-программы - PullRequest
0 голосов
/ 19 ноября 2018

Я изучаю Java, при поиске данных я часто вижу картинки, которые описывают распределение памяти во время работы программы. Просто как:

Описание полиморфизма enter image description here

Описание наследования enter image description here

В сочетании со статьей я могу понять картину. Но я хочу знать, есть ли какой-либо метод или команда, которая позволяет мне видеть состояние распределения памяти в 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
    }
}
...