浅谈Java程序执行的内存分析

Java虚拟机的内存可以简单的分为三个区域虚拟机栈(stack)、(heap)、方法区(method area)。

虚拟机栈的特点:
  1. 栈描述的是方法执行的内部模型。每调用一个方法执行之后,就会在栈中加载一次。
  2.JVM虚拟机为每一个线程都创建栈,用于存储该线程执行方法的信息
  3 . 栈属于线程私有,不能实现线程之间的共享。
  4 . 栈的存储方式是"先进后出,后进先出"。
  5 . 栈是由系统自动分配的,速度快,且是一个连续的内存空间。

堆的特点:
  1. 堆适用于存储创建好的对象和数组(数组也是对象)。
   2 . JVM中只有一个堆,被所有线程共享。
   3 . 堆是一个不连续的内存空间,分配灵活,速度慢。
  
方法区(静态区)的特点:
  1. 方法区是JAVA虚拟机规范,可以有不同的实现方式。
     JDK7之前,存在永久代.
     JDK7时,将永久代中的静态变量和字符串常量池移入到堆内存中。
     JDK8以及之后,元数据空间和堆内存相结合。
   2 . JVM中只有一个方法区,被所有线程共享。
   3. 方法区实际上也是堆,只是用于存储类、常量相关的信息。
   4. 用来存放程序中永远不变或者唯一的内容(类信息、静态变量、字符串常量等)。

public class Person {
	String name;
	int age;
	public  void show(){
		System.out.println("姓名:"+name+",年龄:"+age);
	}
}
//创建Person类对象并使用
public class TestPerson {
	public static void main(String[ ] args) {
		// 创建p1对象
		Person p1 = new Person();
		p1.age = 24;
		p1.name = "张三";
		p1.show();
		// 创建p2对象
		Person p2 = new Person();
		p2.age = 35;
		p2.name = "李四";
		p2.show();
	}
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值