zoukankan      html  css  js  c++  java
  • 面向对象内存分析

    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

  • 相关阅读:
    [BZOJ3160]万径人踪灭
    [BZOJ5212][ZJOI2018]历史
    [BZOJ3563&3569]DZY Loves Chinese
    [HDU4336]Card Collector
    [HDU4652]Dice
    [POJ3683]Priest John's Busiest Day
    ISODateTimeFormat 转换2019-08-15T00:36:49.366456463Z 日期格式
    GoTTY-K8S-Docker 终端
    【php】PHP对redis操作详解
    【tool】VLC播放rtmp协议
  • 原文地址:https://www.cnblogs.com/kiwi-deng/p/12165482.html
Copyright © 2011-2022 走看看