zoukankan      html  css  js  c++  java
  • java程序执行内存处理过程

      我们学习知识,不仅要知其然,还要知其所以然,你的工资必定和你学习的深度成正比。

      在以往.net的学习过程中,我们了解了怎么去开发一个程序,并有了一定的开发经验,但是一个程序具体是怎么在内存中运行的呢?

      1、首先来看一张图。

    2、在这张图中,我们可以很清楚的了解到:

    • 栈中主要存放局部变量。
    • 堆中存放new出来的东西。
    • 而static 的变量或者字符串常量 则存在在 data segment(数据区)中;
    • 那么类中方法的话,是存在在 code segment(代码区)中了。

    3、举例

    给一个简单的java代码例子大家加深理解

    public static void main(String args[])
    {
             Point p = new Point(1, 2, 3);
    }
    
    class Point{
        int x, y, z;
    Point(int _x, int _y, int _z)    
        x = _x;
        y = _y;
        z = _z;  
    }

    此程序的运行过程如下:

    1. 把程序从硬盘加载到内存区
    2. 找到main方法开始执行
    3. 执行程序过程中的内存管理

    栈内存中出现局部变量p;

    堆内存中出现数据区;

    栈中的p的指针指向堆中相应的数据区。如图所示。

  • 相关阅读:
    60、剑指offer--把二叉树打印成多行
    59、剑指offer--按之字形顺序打印二叉树
    KNN(最近邻算法)
    RBM(受限玻尔兹曼机)
    Denoising Autoencod
    决策树算法
    AdaBoost算法简介
    suricata工作流程简介
    KD tree详解
    tesseract训练新字库
  • 原文地址:https://www.cnblogs.com/jinfulin/p/3984764.html
Copyright © 2011-2022 走看看