java面向对象的底层内存分析(JVM运行的原理)

本文深入剖析Java面向对象在内存中的体现,详细讲解了JVM的栈、堆和方法区。通过实例分析了对象创建、内存分配以及数据传递的过程,展示了从代码执行到内存管理的全过程。
摘要由CSDN通过智能技术生成

java面向对象的底层内存分析:
java虚拟机的内存可分为三个区域:栈(stack)、堆(heap)、方法区(method area)。
一、栈的特点如下:
1.栈描述的是方法执行的内存模型。每个方法被调用都创建一个栈帧(存储局部变量、操作数、方法出口等)
2.JVM为每个线程创建一个栈,用于存放该线程执行方法信息(实际参数、局部变量等)
3.栈属于线程私有,不能实现线程间的共享。
4.栈的存储特性是“先进后出,后进先出”,类似于子弹进出弹夹的过程。
5.栈是由系统自动分配,速度快。栈是一个连续的内存空间。

二、堆的特点如下:
1.堆用于存储创建好的对象和数组(数组也是对象),例如代码中创建新对象是会出现new关键字,new的出现标志着堆中对象的创建。
2.一个JVM只有一个堆,被所有线程共享。
3.堆是一个不连续的内存空间,分配灵活,速度慢

三、方法区(又叫静态区)特点如下:
1.JVM中只有一个方法区,被所有线程共享。
2.方法区实际也是堆(可以理解成堆中比较特殊的一部分),只是用于储存类、常量相关的信息。
3.用来存放程序中永远不变或者相对唯一的内容(类信息【Class对象】、静态变量、字符串常量等)

(-----------------------------------分割线----------------------------------)

接下来,我们用代码具体拆解和分析一下代码运行的时候,JVM的内存是如何运行的,举例代码如下:

public class SxyStu {
   
	//属性
	int  id;
	String name;
	int age;
	
	Computer comp;//计算机
	
	//方法
	void study() {
   
		System.out.println(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值