jvm中内存主要划分

Java虚拟机在执行Java程序的时候会把内存划分为几种不同的区域

1) 程序计数器:Java中多线程通过线程轮流切换并分配处理器的执行时间来实现的,那么问题来了,假如一个线程第一次执行完,线程第二次执行的时候它是怎样回到第一次执行的位置的,程序计数器就是解决这个问题的,记录一个线程执行的指令,以便下次执行能够回到原位置,每个线程都有自己的程序计数器(一块较小的内存空间)。

2) 虚拟机栈:描述的是Java方法的内存模型,每执行一个Java方法就会创造一个栈,用于存储局部变量的变量表,方法出口等信息,局部变量表存放基本数据类型和引用(指向堆内存空间中对象的初始地址),也为线程私有,和线程同声明周期。

3) 本地方法栈:作用相似虚拟机栈,虚拟机栈为Java方法提供服务,本地方法栈为虚拟机的Native方法(native是一个计算机函数,一个Native Method就是一个Java调用非Java代码的接口。方法的实现由非Java语言实现,比如C或C++。)提供服务

4) Java堆:几乎所有的对象实例以及数组都要在堆上分配内存空间,为线程共享区域。也是垃圾收集器主要管理的地方。

5) 方法区:线程共享区域,主要存储虚拟机加载的类信息、常量、静态变量,垃圾收集器在这个区域较少出现,回收的主要目标是常量池和类型的卸载。

6) 运行时常量池:属于方法区的一部分,存放常量池(存放编译期生成的各种字面量和符号引用)。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值