java内存模型

本文详细解析了Java虚拟机运行时的数据区域,包括程序计数器、Java虚拟机栈、本地方法栈、Java堆和直接内存五个部分。阐述了各部分的功能、线程私有与共享特性,以及可能发生的错误。

java虚拟机运行时数据区域包含5个部分:
java运行时数据区

  1. 程序计数器PC
    当前线程所执行的字节码的行号指示器, java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的。 每个线程都有自己的PC,各个线程之间计数器互不影响,线程私有。
  2. java虚拟机栈,线程私有。java每个方法执行时都会创建一个栈桢,用于存储局部变量表,操作数栈,动态链接,方法出口等信息。 每个方法从调用到执行完成的过程,对应着一个栈帧在虚拟机栈中出入栈的过程。 会发生StackOveflowError 和OutOfMemoryError
  3. 本地方法栈,用于执行native方法 主要为调用native方法服务 线程私有,同java虚拟机栈。
  4. java堆。 线程共享,在虚拟机启动时创建,是GC的主要作用区域,用于存放对象实例,所有的对象实例都在这里分配内存。 数组也要在堆上分配内存。java堆可以处于物理上不连续的区域。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值