Java把内存划分为以下bai4个部分:
1、栈区(stacksegment)—由编译器自动du分配释放,存放函数的参数值,局部变量的值等,具体方法执行结束之后,系统自动释放JVM内存资源。
2、堆区(heapsegment)—一般由程序员分配释放,存放由new创建的对象和数组,jvm不定时查看这个对象,如果没有引用指向这个对象就回收。
3、静态区(datasegment)—存放全局变量,静态变量和字符串常量,不释放。
4、代码区(codesegment)—存放程序中方法的二进制代码,而且是多个对象共享一个代码空间区域。

  • 对于局部变量,如果是基本类型,会把值直接存储在栈;如果是引用类型,比如String ss = new String(“william”);会把其对象存储在堆,而把这个对象的引用(指针)ss存储在栈。由于指针是私有的,栈销毁后,在内存的中对象没有其他的引用,就会被收回,因此局部变量的生命周期比较短,就是栈的生命周期

    再如
    String s1 = new String(“william”);
    String s2 = s1;
    s1和s2同为这个字符串对象的实例,但是对象只有一个,存储在堆,而这两个引用存储在栈中。

    也就是说某个方法,类似一个模板,在被执行时,每个线程会复制这个模板,局部变量此时才会被创建,并放入栈中,栈是线程私有的,因此局部变量是就是线程私有的,各个线程是彼此不见的

  • 类的成员变量在不同对象中各不相同,都有自己的存储空间(成员变量在堆中的实例对象中),基本类型和引用类型的成员变量都在这个对象的空间中,作为一个整体存储在堆。

    假设类A 内有个成员变量 b ,那么A的实例a1,a2 在堆内存中,且各自都有一个变量b。当载体A的实例a1,a2被创建时,b也会创建了。 并且是跨线程可见的。 成员变量的生命周期比较长,和载体一致,载体被回收了,这个成员变量才会被销毁!进而这个成员变量的引用对象才会被销毁

  • 而类的方法却是
    该类的所有实例对象共享的,只有一套,对象使用方法的时候方法才被压入栈,方法不使用则不占用内存。

参考

原文链接:https://blog.csdn.net/feiqipengcheng/article/details/108518558
原文链接:https://blog.csdn.net/aop_ioc/article/details/108472004

Java 变量存储的位置(局部变量、成员变量)相关推荐

  1. java面向对象(类与对象,局部变量成员变量,基本类型和引用类型作为参数传递)...

    一.类和对象的区别 类是对某一类事物的抽象描述,而对象用于表示现实中该类事物的个体 可以将玩具模型看作是一个类,将一个个玩具看作对象,从玩具模型和玩具之间的关系便可以看出类与对象之间的关系.类用于描述 ...

  2. java实例成员和类成员变量_Java 中成员变量又分为 和类成员变量。_学小易找答案...

    [简答题]I'm not quite so poetic, but I do know that the subway is as essential to the character of New ...

  3. Java语言基础Day14(内部类、类作为成员变量类型、接口作为成员变量类型、接口作为方法的参数或返回值、红包案例、JDK9的JShell、编译器的两点优化)

    今日内容 一.内部类 1.内部类的概念与分类 2.成员内部类的定义 3.成员内部类的使用 4.内部类的同名变量访问 5.局部内部类定义 6.局部内部类的final问题 7.匿名内部类 匿名内部类定义格 ...

  4. [转载] 面试题:说说Java中接口、类、成员变量、成员方法、构造方法有哪些访问修饰符和他们的作用范围

    参考链接: Java中的访问修饰符 * 问题:说说Java中接口.类.成员变量.成员方法.构造方法有哪些访问修饰符和他们的作用范围 * 答:接口的访问修饰符只有public 1个 *    类的访问修 ...

  5. java系列8:private修饰的成员变量怎么传参

    可以使用getter,setter方法 package drchen.java.day06.demo04;public class Student {// 成员变量private String nam ...

  6. java成员变量默认是_在Java语言中,String类型的成员变量的默认初始值是( )

    在Java语言中,String类型的成员变量的默认初始值是( ) 答:C.null 学生最主要的权利是() 答:受教育权 提倡教育要适合孩子的 "敏感期"的教育家是 答:蒙台梭利 ...

  7. 重学Java(035)——Java基础知识(类作为成员变量、接口作为成员变量、接口作为方法参数和返回值类型)

    学习内容:三种引用类型用法 一.类作为成员变量 二.接口作为成员变量 三.接口作为方法参数和返回值类型 实际的开发中,引用类型的使用非常重要,也是非常普遍的.我们可以在理解基本类型的使用方式基础上,进 ...

  8. java getfield_Java Class.getField()/getDeclaredField()返回成员变量

    首页 > 基础教程 > 反射 > Reflection API Java Class.getField()/getDeclaredField()返回成员变量 Class.getFie ...

  9. Java学习 第十五章 成员变量和局部变量的区别 / 三大特征之一 (封装性)/构造方法 /private关键字

    第十五章 局部变量和成员变量: 1.定义位置不一样 局部变量:在方法内部定义 成员变量:在方法的外部,直接写在类当中 2.作用范围不一样 局部变量:只能在方法当中使用 成员变量:整个类都可以使用 3. ...

最新文章

  1. Android SharedPreferences 的使用
  2. 【翻译】SQL Server索引进阶:第三级,聚集索引
  3. linux shell 脚本实现tcp/upd协议通讯(重定向应用)
  4. POJ 3259 Wormholes【最短路/SPFA判断负环模板】
  5. 用Android打出马奔跑的动画,一款非常好用的动画库Lottie
  6. python 树状图代码_Python 无限级分类树状结构生成算法 「实用代码」
  7. 多维多重背包问题_动态规划--背包问题
  8. 视频教程-思科入门CCNA初级网络工程师视频课程-网络技术
  9. 手把手全面解读思科(Cisco)网络技术学院 考试折扣号申请说明
  10. Flink 可视化开发平台--Streamx部署
  11. 员工转正申请书_新员工转正申请书
  12. sql如何进行脱敏操作_股市入门基本知识丨大阳线出现后如何进行短线操作
  13. 高通CPU处理器解析
  14. mybatis 父子级树形结构查询
  15. 视频跟踪——TLD算法
  16. Win7 Wininit.exe任意加载/执行(漏洞)
  17. 【博弈论】bzoj1022[SHOI2008]小约翰的游戏John
  18. 【BLE MESH】PB-ADV入网详解
  19. crf graph matlab_如何评价 Vicarious 在 Science 上提出基于概率图模型(PGM)的 RCN 模型?...
  20. 【奥运功臣沪江小D】沪江小D奥运系列LOGO欣赏

热门文章

  1. C语言之打印菱形图详解
  2. 爱快docker 安装wordpress 6.1.1教程
  3. Python命令使用大全
  4. NET导入Excel带进度条。
  5. tecplot在legend中加上单位
  6. C# 学习笔记:委托(4):事件(2)
  7. 格式化输出以及运算符
  8. 智能优化算法-神经网络-径向基神经网络
  9. 如何把苹果手机备份到新手机 苹果手机换新手机微信记录怎么转移
  10. 10分钟让你懂得基金(FOUND)是什么