程序在內存中的執行過程-1


  學習Java,比較重要的一個思想就是分析內存中程序執行的過程。

  廢話不多說,我們首先要知道的是程序比如我們編寫的.java程序,存放的位置是在硬盤的某一個區域中,如果不執行這個程序,那么它就默默地存在,不起任何作用。當我們開始執行某一個程序時,程序首先要做的事就是把自己也就是代碼,全部load或者說裝載到內存區域中去。然后Windows本身的系統代碼會找到自己編寫的程序代碼的main方法,從main方法開始執行程序。第三,當這個程序開始執行之后,程序中的所有數據會被內存分類管理起來,一般來說內存管理最基礎的會分成四部分:code segment(存放代碼)、data segment(存放靜態變量和字符串常量)、stack(存放局部變量)、heap(存放new 出來的東西)。

  真正執行的時候,代碼首先會被放在code segment中,OS(操作系統)找到相關的main方法后,才開始執行后面的代碼。

  現在,我用一個簡單的例子程序來說明一下:

public class practic1 {
  public static void main(String[] args) {//當OS找到main 方法,開始執行后面的代碼
    int a = 123;//聲明一個變量a,a是在main方法中聲明的,所以是個局部變量也是一個基本類型的變量,賦給它的值123會存放在stack區域中。
    double b = 3.1415;//同上
    String c = "Hello World";//聲明一個變量c,c也是在main 方法中聲明的,但是定義c這個變量的是一個字符串型,它是引用類型的變量,所以賦給它的值會存放在heap區域中,c本身是存放在stack區域中,它本身保存的其實是它的值在heap區域中的首地址。
    System.out.println("" + a + b + c);//現在要打印輸出這幾個變量的值,a和b都是存放在stack區域中,所以程序會從這個區域中去調用它們的值。調用c的時候,是調用的c保存的地址所指向heap區域中的內容。
  }
}

  因為學習進度的原因,目前就說這么多,后面還會持續更新這一主題的內容。如果覺得有用,請動手點個贊,不喜勿噴!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM