[2024.12.29 JavaSE学习]内存分析 && Java面向对象基本概念

Java中的内存分析

  • 可以存档new的对象和数组
  • 可以被所有的线程共享,不会存放别的对象引用

  • 存放基本变量类型(会包含这个基本类型的具体数值)
  • 引用对象的变量(会存放这个引用在堆里的具体地址)

方法区

  • 可以被所有的线程共享
  • 包含了所有的class和static变量

面向对象(Object-Oriented Programming, OOP)

PS: 个人感觉可以参照之前C++面向对象学习思路,主体脉络和语法非常多相似之处

三大特性

  • 封装
  • 继承
  • 多态

创建对象的内存分析

如代码:

public class MyClass {
    String str;

    public static void main(String[] args) {
        MyClass obj = new HisClass();
        obj.str = "Hello";
    }
}
  • 方法区加载类和main方法(此时加载的是main定义和字节码,这是类的元数据的一部分,是静态的、共享的)
  • 方法区中的常量池加载一些常量,也是在类加载时期进行
  • main方法存储在栈区(此时加载的是运行时状态,包括局部变量、操作数栈等,这是动态的、与具体调用相关的)
  • 而后进行类的实例化时,c作为引用变量名加载至栈区,而在堆区new了一块区域,并使用栈区中的一些局部变量(基本变量)和一些常量池的如字符串等进行成员赋值
  • 当类加载时,所有静态方法都会加载到静态方法区,而后所有该类的对象实例后都可以调用该方法
posted @ 2024-12-29 01:53  Luna-Evelyn  阅读(12)  评论(0)    收藏  举报