java面向对象的内存分析

简介: 1、Java虚拟机的内存可以分为5个部分栈stack、堆heap、方法区method area、本地方法栈(Native Method stack)、寄存器(PC Register




1、Java虚拟机的内存可以分为5个部分


栈stack、堆heap、方法区method area、本地方法栈(Native Method stack)、寄存器(PC Register)


2.栈的特点:


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


(2)JVM为每个线程创建一个栈,用于存放该线程执行方法的局部变量(①实际参数②方法{ }内部的变量等)


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


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


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


3.堆的特点:


(1)凡是new出来的东西,都在堆当中;堆内存里面的东西都有一个地址值:16进制(0x开头的都是16进制)


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


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


堆内存里面的数据,都有默认值。规则:

①整数,默认为0

②浮点数,默认为0.0

③字符,默认为’\u0000’

④布尔,默认为false

⑤引用类型,默认为null


4.方法区的特点:


(1)JVM只有一个方法区,被所有线程共享!


(2)方法区实际上也是堆,用来存放程序中永远不变或唯一的内容(.class相关信息、方法的信息、静态变量、字符串常量等)


5.本地方法栈:


与操作系统有关


6.寄存器:


与CPU有关


7.实例


7.1数组内存图


53a4bfa17b2648d29db413c0e5950373.png


5a895d800b814cdbb14228e39eee7fff.png


7.2对象内存图


dd211c868cd2493d9b9fada0f31a1c7e.png


7.3静态static的内存图


c5cf922bbb80431fad94bfc9ecd5e64e.png


7.4递归的内存图


c2ad12932e1040b7879e3afb558a70b7.png

相关文章
|
19小时前
|
存储 安全 Java
Java面向对象最新超详细总结版!
Java面向对象最新超详细总结版!
27 7
Java面向对象最新超详细总结版!
|
19小时前
|
存储 Java
深入理解Java虚拟机:JVM内存模型
【4月更文挑战第30天】本文将详细解析Java虚拟机(JVM)的内存模型,包括堆、栈、方法区等部分,并探讨它们在Java程序运行过程中的作用。通过对JVM内存模型的深入理解,可以帮助我们更好地编写高效的Java代码,避免内存溢出等问题。
|
19小时前
|
Java 关系型数据库 MySQL
【Java Spring开源项目】新蜂(NeeBee)商城项目运行、分析、总结
【Java Spring开源项目】新蜂(NeeBee)商城项目运行、分析、总结
12 4
|
19小时前
|
Java
java面向对象——包+继承+多态(一)-2
java面向对象——包+继承+多态(一)
18 3
|
19小时前
|
SQL Java 编译器
java面向对象——包+继承+多态(一)-1
java面向对象——包+继承+多态(一)
17 2
|
19小时前
|
Java
【Java多线程】分析线程加锁导致的死锁问题以及解决方案
【Java多线程】分析线程加锁导致的死锁问题以及解决方案
19 1
|
19小时前
|
存储 算法 Java
了解Java内存管理与垃圾回收机制
了解Java内存管理与垃圾回收机制
8 0
|
19小时前
|
存储 Arthas 监控
JVM工作原理与实战(三十):堆内存状况的对比分析
JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。本文主要介绍了堆内存状况的对比分析、产生内存溢出的原因等内容。
13 0
|
19小时前
|
缓存 Linux
linux性能分析之内存分析(free,vmstat,top,ps,pmap等工具使用介绍)
这些工具可以帮助你监视系统的内存使用情况、识别内存泄漏、找到高内存消耗的进程等。根据具体的问题和需求,你可以选择使用其中一个或多个工具来进行内存性能分析。注意,内存分析通常需要综合考虑多个指标和工具的输出,以便更好地理解系统的行为并采取相应的优化措施。
30 6
|
19小时前
|
机器学习/深度学习 分布式计算 数据处理
Spark是一个基于内存的通用数据处理引擎,可以进行大规模数据处理和分析
【5月更文挑战第2天】Spark是一个基于内存的通用数据处理引擎,可以进行大规模数据处理和分析
24 3