Java的程序是运行在java虚拟机上的,也就是平时所说的JVM。
程序中所有的方法、变量、常量、实例、静态存储都是由JVM在内存中进行分配的

  1. 寄存器:JVM内部的虚拟的存储器,JVM中运行最快的,和CPU有关,我们无法控制。
  2. 堆栈(也就是平时所说的栈stack):用来存放基本数据类型和引用数据类型的实例的(也就是实例对象在堆中的首地址)
    • Person p = new Person; p存贮在栈中,值为@23651dff(一个地址)。
    • 栈是线程独享的。每一个线程都有自己的线程栈。
    • 八大基本数据类型,
  3. 堆:用来存放程序动态生成的数据。(new 出来的对象的实例存储在堆中,但是仅仅存储的是成员变量,也就是平时所说的实例变量,成员变量的值则存储在常量池中。
    • 成员方法是此类所实现实例共享的,并不是每一次new 都会创建成员方法。成员方法被存储在方法区,并不是存储在第一个创建的对象中,因为那样的话,第一个对象被回收,后面创建的对象也就没有方法引用了。静态变量也存储在方法区中。局部变量在栈内存中,JVM为每一个类分配一个栈帧,然后引用类型的局部变量指向堆内存中的地址),堆是内存中共享的区域,要考虑线程安全的问题。
  4. 方法区(non-deap,(非堆),在堆中为其分配的一部分内存):里面存储的是一些。类类型加载的东西(也就是反射中的.class之后的Class),用于存储已经被虚拟机加载的类的信息、常量、静态变量等。与堆一样,是被线程共享的内存区域,要注意线程安全问题。
  5. 常量池:上面已经说了,存储在堆中的。JVM会对每一个加载的类维护一个常量池。用于存储成员变量中的数值。(String str= “aa”, aa也是存储在String.class类中的常量池中的。Str只是在栈中作为aa的首地址)。
  6. 代码段:这个就是用来存储代码片段的。
  7. 数据段:这个是用来存储静态成员的,包括静态变量,静态常量(存储在这里面的常量池当中),静态方法,静态类。

java堆栈总结、JVM相关推荐

  1. java命令查看jvm内存

    JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jstack.jmap.jhat.jstat等小巧的工具,本博客希望能起抛砖引玉之用,让 ...

  2. java中对JVM的深度解析、调优工具、垃圾回收

    jdk自带的JVM调优工具 jvm监控分析工具一般分为两类,一种是jdk自带的工具,一种是第三方的分析工具.jdk自带工具一般在jdk bin目录下面,以exe的形式直接点击就可以使用,其中包含分析工 ...

  3. Java 详解 JVM 工作原理和流程

    2019独角兽企业重金招聘Python工程师标准>>> 作为一名Java使用者,掌握JVM的体系结构也是必须的. 说起Java,人们首先想到的是Java编程语言,然而事实上,Java ...

  4. 利用 Java dump 进行 JVM 故障诊断

    引言 对于大型 java 应用程序来说,再精细的测试都难以堵住所有的漏洞,即便我们在测试阶段进行了大量卓有成效的工作,很多问题还是会在生产环境下暴露出来,并且很难在测试环境中进行重现.JVM 能够记录 ...

  5. Java虚拟机(JVM)参数配置说明

    http://lavasoft.blog.51cto.com/62575/25492/ Java虚拟机(JVM)参数配置说明   在Java.J2EE大型应用中,JVM非标准参数的配置直接关系到整个系 ...

  6. java 抛异常 jvm_邪恶的Java技巧使JVM忘记检查异常

    java 抛异常 jvm 我长期以来一直在批评Java中编译器检查异常的机制. 无论您是爱还是恨,都可以肯定一件事:在某些情况下,您不想与他们打交道. Java中的解决方案是将一个检查后的异常包装在n ...

  7. java jvm调优_(第1部分,共3部分):有关性能调优,Java中的JVM,GC,Mechanical Sympathy等的文章和视频的摘要...

    java jvm调优 我已经花了几个月的时间考虑审查有关性能调优,JVM,Java中的GC,Mechanical Sympathy等主题的文章和视频的缓存,并最终花了点时间–也许这就是重点我什么时候才 ...

  8. Java虚拟机(JVM)简介

    什么是JVM Java虚拟机(JVM)是使计算机能够运行Java程序的抽象计算机. JVM有三个概念: 1.规格 2.实施 3.实例. 该规范是正式描述JVM实现要求的文档. 具有单一规范可确保所有实 ...

  9. (第1部分,共3部分):有关性能调优,Java中的JVM,GC,Mechanical Sympathy等的文章和视频的摘要...

    我已经花了几个月的时间考虑审查有关性能调优,JVM,Java中的GC,Mechanical Sympathy等主题的文章和视频的缓存,并最终花了点时间–也许这就是重点我什么时候需要做我的智力进步! 感 ...

  10. 一文详解java中对JVM的深度解析、调优工具、垃圾回收

    2019独角兽企业重金招聘Python工程师标准>>> jvm监控分析工具一般分为两类,一种是jdk自带的工具,一种是第三方的分析工具.jdk自带工具一般在jdk bin目录下面,以 ...

最新文章

  1. Visual C# .NET 2003 语言的改变
  2. 2021 OceanBase 数据库大赛来了!
  3. C++知识点6——数组与指针初步
  4. MVC模式与三层架构的区别
  5. idea双击无反应,打不开的解决方法,两种情况。
  6. 我看百度和Google
  7. 信息系统项目管理师真题及答案
  8. invalid floating point operation什么意思_数据可视化有意思的小例子:Taylor Swift 歌词数据分析和可视化...
  9. 通过nginx链接mysql事务问题_nginx-关于phpmysql的事务
  10. 手机模拟位置实现精准位置营销效果分析
  11. ADT安装好在Eclipse后运行模型Android提示Re-installation fai...
  12. sql中的while循环_SQL While循环:了解SQL Server中的While循环
  13. 【DAY8】关于多线程的练习
  14. 中国大学Mooc平台,自动下载pdf文档
  15. 序列选项设置html,clustalx序列比对步骤
  16. 计算机专业师范类分析,师范生应具备的信息技术能力分析
  17. Java实现拼图小游戏(3)—— 添加图片(含JFrame源码阅读)
  18. 操作系统 | 银行家算法
  19. HR告诉你,怎么回答“为什么从上家公司离职?”
  20. 基于画布的手绘风格图形库 Rough.js

热门文章

  1. 哪些软装装饰让你认为是家里装修的点睛之笔?
  2. 解读CUDA Compiler Driver NVCC - Ch.5
  3. 电脑端采集手机视音频并同步
  4. python 图片/语音文件实现base64的转换与解析
  5. 牛客SQL练习-39-针对salaries表emp_no字段创建索引idx_emp_no,查询emp_no为10005, 使用强制索引
  6. reactive函数实现响应式数据
  7. 【C语言】浮点型数据在内存中的存储方式
  8. FPGA与普通CPU的区别
  9. 打开运行PS、AI等软件时卡在启动窗口的解决办法
  10. C语言基础-函数的概念