1. 程式人生 > >Java虛擬機內存分析

Java虛擬機內存分析

有一個 構造 pri 自動創建 被調用 .com alt 相關 study

Java虛擬機的內存可以分為三個區域:棧stack、堆heap、方法區method area

  • 棧描述的是方法執行的內存模型,每個方法被調用都會創建一個棧幀
  • JVM為每個線程創建一個棧,用於存放該線程執行方法的信息
  • 棧屬於線程私有,不能實現線程間的共享
  • 先進後出
  • 棧是由系統自動分配,速度快!棧是一個連續的內存空間

  • 堆用於存儲創建好的對象和數組
  • JVM只有一個堆,被所用線程共享
  • 堆是一個不連續的內存空間,分配靈活,速度慢

方法區

  • JVM只有一個方法區,被所有線程共享
  • 方法區實際也是堆,只是用於存儲類、常量相關信息
  • 用於存放程序中永遠是不變或者唯一的內容。(類信息、靜態變量、字符串常量)

示例代碼:

public class SxtStu {

    //屬性fields
    int  id;
    String  sname;
    int  age;
    
    Computer  comp;  //計算機
    
    //方法
    void  study(){
        System.out.println("我在認真學習!!,使用電腦:"+comp.brand);
    }
    
    void  play(){
        System.out.println("我在玩遊戲!王者農藥!"); 
    }
    
    //構造方法。用於創建這個類的對象。無參的構造方法可以由系統自動創建。
    SxtStu(){
        System.out.println("調用了無參的構造方法!");
    }
    
    //程序執行的入口,必須要有
    //javac  Sxtstu.java   ,   java Sxtstu
    public static void main(String[] args) {
        SxtStu  stu = new SxtStu();   //創建一個對象
        stu.id=1001;
        stu.sname= "高淇";
        stu.age = 18;
        
        Computer  c1 = new Computer();
        c1.brand = "聯想";
        
        stu.comp = c1;
        
        stu.play();
        stu.study();
        
    }
}

class  Computer {
    String  brand;
}

內存圖:
技術分享圖片

Java虛擬機內存分析