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也会随之更改。

     

  • 相关阅读:
    Unable to resolve superclass of
    Android开发eclipse错误汇总
    Failed to fetch URL https://dl-ssl.google.com/android/repository/repository-6.xml, reason: Connection to https://dl-ssl.google.com refused
    INSTALL_FAILED_MISSING_SHARED_LIBRARY
    failed to create the java virtual machine
    Android 的一些提示框
    linux的mount(挂载)命令详解
    Mount挂载命令使用方法
    7Z命令行详解
    Android中Java与JavaScript之间交互(转)
  • 原文地址:https://www.cnblogs.com/xuanxuanBOSS/p/10765458.html
Copyright © 2011-2022 走看看