JVM学习笔记——Part1 自动内存管理机制 Chapter one:Java 内存区域与内存溢出异常(长期更新)

JVM学习笔记——Part1 自动内存管理机制 Chapter one:Java 内存区域与内存溢出异常(长期更新)

本文内容基于 《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》,作者周志明,机械工业出版社出版

0.JVM自动内存管理机制的优点和缺点

0.0 优点
* 减少代码编写的工作量,不需要为每一个new操作去写配对的delete/free代码;
* 不容易出现内存泄漏问题;
* 不容易出现内存溢出问题;

0.1 缺点
* 出现内存泄漏问题,排查难度增大;
* 出现内存溢出问题,排查难度增大;

1.运行时数据区域

Java虚拟机所管理的内存分为:方法区(Method Area)、虚拟机栈(VM stack)、
本地方法区(Native MEthod Stack)、堆(Heap)、
程序计数器(Program Counter Registere)这五个运行时数据区域。其中,方法区
和堆是有所有线程共享的数据区,其他三个区域是线程隔离数据区。

1.0程序计数器
程序计数器的作用,按我的理解,有一点像银行的排号系统,每一个线程就像一个去银行办理业务的人
计数器就是你的号码,当银行叫到你的号码时,你才能去服务窗口办理你要办理的业务。同样Java虚拟
机在多线程执行时,响应线程的计数器后,这个线程才能执行。不太一样的是多线程执行没有特定的顺
序或是规律,是一个无序的、轮流的行为。就像是银行的一个窗口能够同时处理客户1现金存款、客户2
公对公转账、客户三公积金办理。客户1,编号0345(这就是线程的计数器保存的虚拟字节码指令地址),
要在卡一取8万块,然后存5465到卡二。现在客户1和银行经理说要取8万,这时客户三过来要办理公积金
业务,因为客户3是高级VIP,优先办理,处理完成后返回客户1的流程,这时要如何保证回到正确的流程
上,这就是计数器的作用。
计数器区域也是唯一一个在Java虚拟机规范中没有规定任何OutMemoryError情况的区域。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值