JAVA-JVM-原理优化篇

JVM(Java Virtual Machine java虚拟机)

jvm的工作原理:

java语言最大的特点是可以跨平台操作,是因为java将写好的目标代码装载在一个叫JAVA虚拟机的平台上,这样恶意保证在不同平台上运行时,不需要再次编译代码。运行的代码其实是在JVM中,即代码不是直接运行在我们操作平台,所以JVM调优核心是如何让JAVA源代码在JVM中运行的效率最高。
影响JVM运行效率的核心指标是内存的使用,所以我们通常说JVM调试都是在谈论内存分配的问题。

在这里插入图片描述

Class Loader: 类的加载(加载 .class文件)。
JVM Memory: JVM的内存。
Method Area: 方法区。
Heap: 堆(内存,堆中分为三代,GC回收策略也是在堆中)。
JVM Language Stacks: 栈(java栈,存放的变量方法参数等,私有的)。
Native Method Stacks: 本地栈(本地的方法)。
PC Registers: PC计数器,存放私有的栈的寄存器,存放消耗的内存。
Execution Engine:执行引擎。
Native Method Interface:本地接口。
Native Method Libraries:本地库。

执行顺序: 先进行类的加载,然后存放到内存,调用执行引擎,执行引擎调用本地的接口,再调用本地的库。

堆和栈的区别:

JAVA源代码在运行过程中消耗很多内存,为了更好的、更充分的使用这些内存,在设计阶段会对程序所存储的位置进行分类。存储空间会分为两类:堆和栈。

在JAVA虚拟机中使用的数据又分为两类:一是基础数据,二是引用数据。
基础数据 通常包括:byte short int long char float boolean returnAddress。
引用类型 包括:接口,类,数组。

栈是运行单位,所以运行对象都存放在栈中,当程序运行时JVM会为每个线程分配一块栈空间,每个线程栈不是通用的,因为每个任务都有一个独立的线程来执行。堆时存储单位,所以有需要使用的数据都存放在堆中。堆是共享的。也就是堆是存放处理处理的地方,栈是用来处理逻辑的地方。之所以分堆与栈,这样的好处是可以将业务逻辑与数据进行分离,同时也可以提高数据的共享程度。

即:栈中存放的是引用类型,堆中存放的基础数据。

JVM的三代:

SUN、BEA、IBM:

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值