• 面向对象内存分析


    package com.example.demo;
    
    /**
     * @Description TODO
     * @Date 2020/1/8 9:48
     * @Author dengxiaoyu
     */
    public class Student {
    
        private int age;
    
        private String name;
    
        private Teacher teacher;
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Teacher getTeacher() {
            return teacher;
        }
    
        public void setTeacher(Teacher teacher) {
            this.teacher = teacher;
        }
    
        public  void learn() {
            System.out.printf("我的老师是:"+teacher.getName());
        }
    
        public void say() {
            System.out.println("hello");
        }
    
        public static void main(String[] args) {
            Student stu = new Student();
            stu.setAge(18);
            stu.setName("孙悟空");
            System.out.println(stu);
            Teacher teacher = new Teacher();
            teacher.setName("王老师");
            stu.setTeacher(teacher);
            stu.learn();
            stu.say();
        }
    }
    
    class Teacher {
        private String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    View Code
    虚拟机内存 可分为3个区 栈stack、堆heap、方法区method area

    栈的特点如下:

      1. 栈描述的是方法执行的内存模型。每个方法被调用都会创建一个栈帧(存储局部变量、操作数、方法出口等)

      2. JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数、局部变量等)

      3. 栈属于线程私有,不能实现线程间的共享!

      4. 栈的存储特性是“先进后出,后进先出”

      5. 栈是由系统自动分配,速度快!栈是一个连续的内存空间!

    堆的特点如下:

      1. 堆用于存储创建好的对象和数组(数组也是对象)

      2. JVM只有一个堆,被所有线程共享

      3. 堆是一个不连续的内存空间,分配灵活,速度慢!

    方法区(又叫静态区)特点如下:

      1. JVM只有一个方法区,被所有线程共享!

      2. 方法区实际也是堆,只是用于存储类、常量相关的信息!

      3. 用来存放程序中永远是不变或唯一的内容。(类信息【Class对象】、静态变量、字符串常量等)

    下图是分析上述代码main方法的内存图

     文章摘自尚学堂300集高琪老师的教学视频,可以让大家对内存分析有个了解 https://www.sxt.cn/Java_jQuery_in_action/object-oriented.html

  • 相关阅读:
    (copy) Shell Script to Check Linux System Health
    HTML5 笔记1
    成年后更想要人懂
    端午不过节
    兜兜转转还是往前了一小步
    五月下旬这些天
    立陶宛话剧观后感
    杯子
    你学过的东西总会在某个时候用到
    初识理财记
  • 原文地址:https://www.cnblogs.com/kiwi-deng/p/12165482.html
Copyright © 2020-2023  润新知