JVM-01-JVM基础-01-体系结构

一、JVM引入

1.1 java代码执行流程

1.2 JDK体系结构

JDK(Java Development ToolKit),包含了Java运行环境(JRE)和开发工具(编译器,调试器,javadoc等)。我们就是依靠JDK来开发和运行Java程序的。

  • JDK的编译器Javac,会将Java代码编译成字节码(.class文件)。编译出的字节码在任何平台上都一样的内容,所以我们说Java语言是门跨平台语言。
  • JRE(Java Runtime Environment) ,它为Java提供了运行环境,其中重要的一环就是通过JVM将字节码解释成可执行的机器码。机器码和平台相关的(不同硬件环境、不同操作系统,产生的机器码不同),所以JVM在不同平台有不同的实现。
  • JRE由JVM、Java运行时类库、动态链接库等组成。

windows环境安装JDK时,可能装有2个JRE,注意程序运行使用的是哪个JRE

C:\Program Files\Java\jdk1.8.0\jre

C:\Program Files\Java\jre8

二、JVM体系结构

  • 方法区、堆是多个线程共享的,存在垃圾回收、OOM;
  • 每个线程都有自己独立的栈、程序计数器、本地方法栈;
  • 栈、本地方法栈无垃圾回收,可能有OOM(如果线程请求的栈帧深度大于虚拟机所允许的最大深度,将抛出StackOverflowError异常);
  • 程序计数器无垃圾回收、无OOM。
  • 方法区:方法区在jdk1.8之前称为永久代,jdk1.8及之后变为元空间【元空间也变为使用本地内存(直接内存),不再使用jvm内存(直接内存并不是 JVM 运行时数据区的一部分, 但也会被频繁的使用)】。

  • 方法区:方法区可以理解为-->编译后的代码,被加载到内存后的存储区。

2.1 JVM体系结构明细图

三、JVM内存分配默认值

1、堆内存:默认初始大小为物理内存的1/64,默认最大为物理内存1/4

2、年轻代和老年代默认的比例是1:2。(即分配给年轻代的最大空间量是堆总大小的三分之一)

3、伊甸园和survivor的默认比例是8:1:1

如上各数据是默认值,都可以通过参数进行修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值