美文网首页
javase part5 - 程序运行过程内存分析

javase part5 - 程序运行过程内存分析

作者: 不再饿肚子给人送饭 | 来源:发表于2017-11-14 14:34 被阅读0次
程序运行内存状态
image.png
栈是一种数据结构,而堆是用来动态分配内存的

内存中的对象

程序在运行时,一些内存空间分配给了数据,这个数据在空间逻辑上分为两个部分,堆和栈.基本类型分配在栈中,Java 对象分配在堆中

//把一些字节分配给了引用变量 book, book 的初始值为null,因为还没有对象赋给它
Book book;
//此行代码会创建一个Book的实例,存储在堆中,并将这个实例的地址赋给引用变量 book
book = new Book();
两个变量引用同一个对象.png
创建两个不同的对象.png
类中包含另一个类.png
加载,连接和初始化

jvm执行一个类会发生什么情况

1.加载: jvm将java类的二进制形式加载到内存中(.class文件)
(并可以将它缓存在内存中,以便将来再次调用,如果没有找到将会引发 ClassNotFoundException)
2.连接: 在这个阶段会做三件事:验证,准备,解析(可选)
2.1验证: jvm根据java编程语言和jvm的语义要求检查这个二进制形式
2.2准备: 准备要执行的指定的类,这包含给这个类的静态变量和其他数据分配内存空间
2.3.解析: 检查制定类是否引用了其他类/接口,能否找到和加载其他的类/接口,这些检查将针对被引用的类/接口递归执行
解析可以在后面执行,真正被引用的时候进行解析
3.初始化: jvm用赋值或缺省值来将


相关文章

  • javase part5 - 程序运行过程内存分析

    程序运行内存状态 内存中的对象 程序在运行时,一些内存空间分配给了数据,这个数据在空间逻辑上分为两个部分,堆和栈....

  • 编码选择之内存分析

    xcode 检查是否存在内存泄漏 xcode 内存检测 一.内存分析 1.静态分析(Analyze)不运行程序, ...

  • iOS - 静态与动态内存分析

    一、静态内存分析 静态内存分析:优点:分析内存非常快,已经可以对整个项目的内存进行分析。缺点:不运行程序,直接对代...

  • Analyze 静态内存分析

    静态内存分析:不运行程序,直接对代码进行分析。 程序的运行:从硬盘读取到内存里面,由CPU一句句执行代码。 静态内...

  • 静态/动态内存分析

    硬盘 -->内存-->CPU内存泄漏:内存空间使用完毕之后未回收 一、静态内存分析 静态内存分析:不运行程序,直接...

  • iOS 知识点(1)内存管理

    前言 内存管理是程序设计中很重要的一部分,程序在运行的过程中分配内存,运行结束后释放占用的内存。 如果程序运行时一...

  • 内存管理

    一. 内存管理的认识 1.概念的认识 内存管理:一个程序在运行时给其分配内存,程序运行结束释放内存的过程。移动设备...

  • Python内存分析

    1. 内存分析 1.1 程序运行方式 Python执行一个程序:程序就从解释器申请内存 Python解释器:预加载...

  • 观察进程的内存占用情况

    概述 想必在linux上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题——你的程序在运行时占用...

  • iOS-汇编

    一. 程序的本质 软件\程序的执行过程 当软件\程序运行的时候会先把软件\程序的数据装载进内存,然后CPU再从内存...

网友评论

      本文标题:javase part5 - 程序运行过程内存分析

      本文链接:https://www.haomeiwen.com/subject/uphxvxtx.html