zoukankan      html  css  js  c++  java
  • Java学习-内存划分及内存的调用关系

    一、JAVA内存划分

    JAVA的内存可以划分为五个部分:堆、栈、方法区、本地方法区和寄存器。

    (Heap):凡是new出来的东西都在堆中

         如:

    1 integer = new Integer(2)  // integer(2) 就在堆中
    2 
    3 int[] arr = {12, 23, 34, 45};  //注意 简化写法在实际编译时仍然会被编译为:int[] arr = new int[]{12, 23, 34, 45};    

         注意:1、堆内存里的东西都有一个16进制的地址值

                   2、堆内存里的数据,都有默认值。 如:整数是:0;布尔是:false;引用是:null ...

    (Stack):存放的都是方法中的局部变量

       局部变量:①方法的参数  ②方法 {} 内部的变量

      作用域:一旦超出了作用域,立刻从栈内存中消失

      注意:方法一定要在栈当中运行

    方法区(Method Area):存储.class相关信息,包含方法的信息

    本地方法区():与操作系统相关

    寄存器(pc Register):与CPU相关


    二、 JAVA内存的调用关系 (堆、栈、方法区)

    例子:数组元素赋值

     1 package cn.itcast.day05.demo03;
     2 
     3 public class arrayRAM {
     4 
     5     public static void main(String[] args) {
     6 
     7         // 初始化三个元素的数组并打印
     8         int[] arrayA = new int[3];
     9         System.out.println(arrayA);
    10         System.out.println(arrayA[0]);
    11         System.out.println(arrayA[1]);
    12         System.out.println(arrayA[2]);
    13 
    14         // 改变数组元素
    15         arrayA[1] = 10;
    16         arrayA[2] = 20;
    17 
    18         // 数组赋值并打印
    19         int[] arrayB = arrayA;
    20         System.out.println(arrayB);
    21         System.out.println(arrayB[0]);
    22         System.out.println(arrayB[1]);
    23         System.out.println(arrayB[2]);
    24 
    25         // 改变数组元素的值
    26         arrayB[1] = 100;
    27         arrayB[2] = 200;
    28         System.out.println(arrayB[1]);
    29         System.out.println(arrayB[2]);
    30     }
    31 }

    上述代码在内存的调用过程:方法区 -> 栈 -> 堆 -> 返回内存地址给栈

    注意:1、arrayA 赋值给arrayB的是它的内存地址值。所以arrayA和B完全相同,因为他们使用的是同一块内存地址。

               2、arrayB修改数组元素,ArrayA也会随之更改。

     

  • 相关阅读:
    yii2.0安装redis
    composer
    Windows下安装redis
    Windows下启动redis闪退
    svn的使用及安装
    mysql主从
    linux下远程链接mysql报错1045
    git命令行克隆报错fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
    git克隆报错128
    yii phpexcel <转>
  • 原文地址:https://www.cnblogs.com/xuanxuanBOSS/p/10765458.html
Copyright © 2011-2022 走看看