【JVM虚拟机】- 01JVM概念、内存结构简介

JVM概念以及内存结构简介

一、初识JVM

概念:Java Virtual Machine,Java程序的运行环境

优点:

  • ​ 一次编写,到处执行
  • ​ 自动内存管理,垃圾回收机制
  • ​ 数组下标越界检查

比较:JVM、JRE、JDK

二、内存结构

整体框架:

2.1 程序计数器

概念:用于保存JVM中下一条指令的地址

特点:1.线程私有:如果当前线程时间使用完毕,会去执行其他线程的代码, 执行完后,会再次返回当前线程执行下一条指令

​ 2.不存在内存的溢出

2.2 虚拟机栈

概念:

  • ​ 每个线程运行所需的内存空间,称为虚拟机栈

  • ​ 每个栈由多个栈帧组成,对应每个方法调用时所占的内存

  • ​ 每个线程只能有一个活动栈帧,对应着当前正在执行的方法

示例:Debug模式下的栈内存分配情况

在这里插入图片描述

问题辨析

1.垃圾回收是否涉及到 虚拟机栈stacks内存?

​ 不涉及,因为栈里面每个方法执行完会自动出栈,自动释放内存

2.栈内存分配越大越好吗?

​ 不是的,因为物理磁盘总大小是一定的,栈内存越大,我们可用的线程数就会减少,反之,线程如果太多,栈内存就很小

3.方法内局部变量是否是线程安全的?

​ 不一定,如果方法没有 变量的 传入传出操作,那在本方法是线程安全的

4.出现了内存溢出 java.lang.StackOverFlowError 异常的原因?

​ 直译为,栈内存过度溢出,两种情况,栈帧过多(死循环),或者,栈帧占内存太大

2.3 本地方法栈

概念:带有native关键字的方法,需要java去调用本地的C或C++方法,有时java无法与底层直接交互,所以用本地方法

2.4 堆

概念:通过new关键字所创建的对象都会放在堆内存里面

特点:所有线程共享对象,需要考虑线程安全问题,有垃圾回收机制

堆内存溢出异常:java.lang.OutOfMemoryError : java heap space

堆内存诊断工具:jps,jmap,jconsole,jvirual

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值