2021-05-10

 

​​​​

  1. Java跨平台原理:

操作系统原始识别文件不包括class文件,在操作系统上安装该操作系统识别的java虚拟机(JVM Java Virtual Machine),进而使用java虚拟机执行class文件(解释成1010文件供操作系统执行),从而是该操作系统间接执行java程序。

  • 又叫平台无关性

  • 一次开发到处执行

  1. 一次开发:开发平台不影响开发结果。最后生成的目标码(.class文件)都是一致的。

  2. 到处执行:通过Java语言编写的应用程序在不同的系统平台上都可以运行。

1.是么是平台 Java是可以跨平台的编程语言,那我们首先得知道什么是平台,我们把CPU处理器与操作系统的整体叫平台。 CPU大家都知道,如果计算机是人,那CPU就是人的大脑,它既负责思维运算,又负责身体各部件的...

Java有一个其他语言都没有特点,那就是跨平台。

跨平台是什么意思呢?

我们首先来看看平台是指什么。

平台就是指我们计算机的操作系统,例如:Windows、Linux、Mac等操作系统。

跨平台的意思就是Java程序,在一次编译后,在这些平台上都可以运行。有其他编程语言基础的朋友应该知道,其他语言没有这个特性,例如c语言在Windows上编译的文件,放到Linux系统上运行,可能就有不兼容问题。


  • 线程独占

  • 每个线程都会有它独立的空间,随线程生命周期而创建和销毁

  • 线程共享
    所有线程能访问这块内存数据,随虚拟机或者GC而创建和销毁

  • JDK8的JVM内存模型

1 Program Counter Register (程序计数寄存器)

1.1. 定义
这是一块较小的内存空间,可看作当前线程正在执行的字节码的行号指示器。如果当前线程正在执行的是:

Java方法
计数器记录的就是当前线程正在执行的字节码指令的地址
本地方法
那么程序计数器值为undefined
1.2. 作用
程序计数器(后文简称为 PCR)有两个作用:

字节码解释器通过改变PCR依次读取指令,实现代码的流程控制,如:顺序执行、选择、循环、异常处理
多线程情况下,PCR用于记录当前线程执行的位置,从而当线程被切换回来的时候能够知道该线程上次运行到哪了
1.3. 特点
一块较小的内存空间,【线程私有】。每条线程都有一个独立的程序计数器。
唯一一个不会出现OOM的内存区域。

2. Java虚拟机栈(JVM Stack)
2.1. 定义
。相对于基于寄存器的运行环境,JVM是基于栈结构的运行环境。栈结构移植性更好,可控性更强。

JVM中的虚拟机栈是描述Java方法执行的内存区域,属【线程私有】。

栈中的元素用于支持虚拟机进行方法调用,每个方法从开始调用到执行完成的过程,就是栈帧从入栈到出栈的过程。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值