学习是对内存模型不太熟悉,总是分不清到底谁在堆,谁在栈,现在可算是明白了!

栈的特点如下栈描述的是方法执行的内存模型。每个方法被调用都会创建一个一个栈帧(存储局部变量、操作数、方法出口等)

JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数、局部变量等)

栈属于线程私有, 不能实现线程间的共享!

栈的存储特性是 “先进后出,后进先出”

栈是由系统自动分配,速度快!栈是一个连续的内存空间

堆的特性如下堆用于存储创建好的对象和数组(数组也是对象)

JVM只有一个堆,被所有线程共享

堆是一个不连续的内存空间,分配灵活,速度慢

方法区(又叫静态区)特点如下JVM只有一个方法区,被所有线程共享

方法区实际也是堆,只是用于存储类、常量相关的信息!

用来存放程序中永远不变的唯一的内容。(类信息【Class对象】、静态变量、字符串常量等)

============================Java内存模型示意图==============================

|-----------------| |-----------------------------------------|

| 栈 | | 堆 ---------------- |

|-----------------| | 15db839 | 方法区 | |

| main方法的栈帧 | | ------------- | 代码 | |

| stu = 15db839------------->| id:10001 | | 静态变量 | |

| c1 = 15db4343-------- | | age:18 | | 静态方法 | |

| | | | | name:----|--| | 字符串常量 | |

| | | | | study() | |--> " 我在学习" | |

| | | | | paly() | | | |

| | | | |-----------| |--> "我在玩游戏" | |

| | | | 15db4343 | | | | |

| | | | |-----------| | | | |

| | |----->| | | | | |

| | | | brand:------| | | |

| | | | | | | |

| | | |-----------| |--------------| |

|-----------------| |-----------------------------------------|

============================================================================

java静态类堆栈_Java回归学习-面向对象内存分析-堆栈相关推荐

  1. Java(二)——简单的理解下面向对象内存分析

    学习进入到面向对象初级阶段,看到代码的执行过程便很蒙圈.后来经同学指点告诉我说让我看看面向对象的内存分析,会对代码的理解有所帮助,这里就针对面向对象的内存分析进行阐述.(有些图和代码可能借助于网络和其 ...

  2. java 基本类型内存_java基本数据类型、内存分析、装包拆包

    2019-09-13   18:01:23 idea快捷键: file->settings->Keymap->搜索关键字 Increase Font Size   增大字体    c ...

  3. java定义构造方法_JAVA基础学习之路(三)类定义及构造方法

    类的定义及使用 一,类的定义 classBook {//定义一个类intprice;//定义一个属性intnum;public static int getMonney(int price, intn ...

  4. java 线程起名字_java多线程学习三::::为什么要给线程起名字并且知道守护作用?...

    为什么要会线程起名字呢? 你如果拿到一连串的Thread-01,Thead-02我想你应该会疯掉,看以下代码 package rs.thread.day0504; /** * @auther rs * ...

  5. java新人培训_Java新人学习必要的步骤以及全套学习路线!

    原标题:Java新人学习必要的步骤以及全套学习路线! 想学Java,刚开始有没有觉得无从下手呢?其实Java的基础知识点,并不多,但是一定要吃透,因为这是为后续核心的学习打下一个良好的基础.简单来说, ...

  6. 狂神说JAVA 数组、三种初始化和内存分析

    声明数组变量 dataType[] arrayRefVar; // 首选的方法或 dataType arrayRefVar[]; // 效果相同,但不是首选方法 dataType[] arrayRef ...

  7. Java性能调优工具:MAT内存分析工具,上万字带你彻底了解

    MAT内存分析工具 MAT是MemoryAnalyzerTool的简称,它是一款功能强大的Java堆内存分析器,可以用于查找内存泄漏以及查看内存消耗情况.MAT是 基于Eclipse开发的一款免费的性 ...

  8. java 方法泛型_Java基础学习,什么是泛型概念,使用泛型有哪些好处?

    一般的类和方法,只能使用具体的类型,要么是基础数据类型,要么是自定义类. 如果要编写可以应用与多种类型的代码,这种刻板的限制对代码的束缚就会很大. 泛型的字面概念: 适合用于许多类型. 在面向对象中, ...

  9. java 静态类 静态方法_JAVA的静态变量、静态方法、静态类

    静态变量和静态方法都属于静态对象,它与非静态对象的差别需要做个说明. (1)Java静态对象和非静态对象有什么区别? 比对如下: 静态对象                                ...

  10. java中二叉树_java后端学习路线

    "学习真的是一个循序渐进的过程,也是一件需要坚持的事情.对于这篇文章,不同阶段的人可能有不同的理解,所以我把我整理的比较全面的java学习路线分享给大家,以供参考.下面的这个学习路线主要针对 ...

最新文章

  1. 改造我们的学习:有钱不会花,抱着金库抓瞎
  2. 交互,真的没有你想象的那么重要
  3. 如何用笔记本建立wifi热点
  4. boost::fusion::reverse用法的测试程序
  5. 【GIS风暴】ArcGIS栅格重采样(Resample)方法详解
  6. layui弹出层html,layui-弹出层
  7. 将PPT内容导出为JPG图片
  8. Shell in AIX Web端 自动远程执行重启tomcat服务命令
  9. Soft-Masked BERT:文本纠错与BERT的最新结合
  10. JavaScript:typeof的用法以及undefined和null的区别
  11. Lucene 文档检索 详细说明
  12. ipmitool介绍_ipmitool管理工具
  13. CAD工具——导出JPG
  14. 给想去阿里面试的同学一些意见
  15. android 跑马灯出现重复跳动、不滚动问题
  16. 关于RedisInsight 创建数据库时 connection time out 连接超时的问题
  17. aardio - 小窍门及注意事项收集贴
  18. iphone6+总显示无服务器,iphone6一直显示无服务为什么啊
  19. 小灰整理了一套Java学习路线图,面试和实战都能用得上!
  20. bpsk matlab,基于MATLAB的BPSK信号仿真分析

热门文章

  1. java中面向对象6_Java面向对象
  2. Javascript特效:音乐导航
  3. CSS:position属性和z_index
  4. 使用内存文件映射MappedByteBuffer读超大文件可能会遇到的问题
  5. 设计模式(9)——模板方法模式
  6. 理解Towards Understanding Ensemble, Knowledge Distillation and Self-Distillation in Deep Learning
  7. OWOD:开放世界目标检测,更贴近现实的检测场景 | CVPR 2021 Oral
  8. 给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
  9. 第 3 讲 三维空间刚体运动
  10. C#6.0VISUALSTUDIO 2015 C#入门经典 第7版pdf