Java运行内存分配详解

一. 进程 线程概念

进程:在系统中能独立运行并且作为资源分配的基本单位,它由一组机器指令、数据和栈堆等组成的。简单来讲就是每个应用都是一个进程。

线程:用来执行具体的功能及任务的,需要进程作为载体,是进程的一个实体(进程内部包含一个或多个线程)。线程基本不具有系统资源,但其可以与其他线程共享进程所拥有的资源。

二.堆 栈 方法区概念及关系

每一个运行的Java程序会产生一个进程和一个JVM实例,而每个线程会产生一个或多个线程。每一个JVM实例内部包含一个堆,堆内存放的是创建的类的实例及数组,栈内存放的是对堆中对象的引用。局部变量new出来时会在堆和栈中给其分别分配内存空间,当局部变量声明周期结束之后,栈空间会被立刻回收,而堆则需要等待GC回收。
JVM内存包含3个区:堆、栈、方法区

1.存储的全是对象,每个对象都包含一个与之对应的class信息
2.JVM内只有一个堆区,且被所有线程共享,堆中不存放基本类型和对象的引用,只存放对象及数组本身。

1.每个线程包含一个栈区,内部存放基本数据类型及对对象的引用
2.每个栈内的数据都是私有的,外部不能访问
3.栈分为基本类型变量区、执行文上下环境、操作指令区
方法区(静态区)
1.被所有线程共享,包含所有的class和static变量
2.其包含在整个程序过程当中永远唯一的元素,如class,static变量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值