虚拟机

【JVM虚拟机】(9)-- JVM是如何处理异常的

試著忘記壹切 提交于 2020-02-08 23:07:20
JVM是如何处理异常的 上篇博客我们简单说过 异常信息是存放在属性表集合中的Code属性表里 ,那么这篇博客就单独讲Code属性表中的exception_table。 在讲之前我们先思考两个问题? 1、为什么捕获异常会较大的性能消耗? 2、为什么finally中的代码会永远执行? 接下来会从JVM虚拟机的角度来解答这两个问题。 一、概念 1、JVM是如何捕获异常的? 1、编译而成的字节码中,每个方法都附带一个 异常表 。 2、异常表中每一个条目代表一个 异常处理器 3、触发异常时,JVM会遍历异常表,比较触发异常的字节码的索引值是否在异常处理器的 from指针到to指针 的范围内。 4、范围匹配后,会去比较 异常类型和异常处理器中的type是否相同 。 5、类型匹配后,会跳转到 target指针所指向的字节码 (catch代码块的开始位置) 6、如果没有匹配到异常处理器,会弹出当前方法对应的 Java栈帧 ,并对调用者重复上述操作。 2、什么是异常表? 1. 每个方法都附带一个异常表 2. 异常表中每一个条目, 就是一个异常处理器 异常表如下: 3、什么是异常处理器?其组成部分有哪些? 1、异常处理器由from指针、to指针、target指针,以及所捕获的异常类型所构成(type)。 2、这些指针的数值就是字节码的索引(bytecode index, bci),可以直接去定位字节码

快速解决vmware workstations与device/credential guard不兼容问题

浪尽此生 提交于 2020-02-08 22:59:12
快速解决vmware workstations与device/credential guard不兼容问题 问题描述 问题分析 解决 问题描述 在windows10更新到1909后,迫不及待的试用了其沙盒功能,导致VMware workstations虚拟机无法打开,出现** vmware workstations与device/credential guard不兼容…**问题。 问题分析 深层次的原因不知,现象是windows虚拟机监控程序与vm虚拟机不兼容,这两者就像是山上的两只公老虎,不能兼容。 解决 网上查找的资料大多大同小异,并且步骤繁多,作者在多次尝试关键的步骤后得出了如下的快速解决问题的方法: 将 服务 中“ HV 主机服务 ”启动属性设置为 手动启动 并 关闭 以 管理员身份 打开cmd或者power shell,设置虚拟机监控程序的boot启动方式。命令为 bcdedit /set hypervisorlaunchtype off 重启计算机,vm可以正常的运行 注意: bcdedit /set hypervisorlaunchtype off运行后windows沙盒功能无法再启动,如果需要使用windows沙盒功能,只需要运行bcdedit /set hypervisorlaunchtype Auto 命令后重启即可。 来源: CSDN 作者: KS004 链接:

在虚拟机中安装 Ubuntu

China☆狼群 提交于 2020-02-08 20:39:53
在虚拟机中安装 Ubuntu 步骤 安装前的准备和基本安装 设置语言环境 安装常用软件 1. 安装前的准备和基本安装 1.1 安装前的准备 访问 http://cn.ubuntu.com/download/ 下载 Ubuntu 16.04 版本 在操作系统上安装 VMWare 虚拟机软件 为什么要使用虚拟机? 不需要准备 额外的电脑 在虚拟机中可以 大胆尝试任何操作 ,不用担心造成不可逆转的破坏 1.2 基本安装 有了映像文件之后,只需要按照提示一步一步操作即可安装 Ubuntu 了 提示 ,在开始安装之前,请确认勾选了 在虚拟机中访问个人文件夹 ,如下图所示: 该选项可以方便地实现在 虚拟机 和 个人电脑 之间共享文件 安装结束后,登录并且进入系统,可以看到以下画面: 2. 设置语言环境 按照以下步骤操作可以修改 ubuntu 的语言环境 进入 系统设置 System Settings 打开 语言支持 Language Support 通过 安装/删除语言 Install/Remove Languages 添加 简体中文 Chinese(simplified) 将 汉语 拖拽到 顶部 ,如下图所示: 重新启动系统 不 修改文件夹的名称,如下图所示: 3. 安装常用软件 3.1 设置服务器镜像源 3.2 在启动栏添加 终端 图标 3.3 apt 终端命令 3.4 谷歌浏览器

Java虚拟机JVM的小总结

女生的网名这么多〃 提交于 2020-02-08 20:35:54
1.Java的三种核心机制 Java虚拟机 JVM (Java Virtual Machine) 垃圾回收机制 GC ( Garbage Collection) 代码安全性检测机制(Code Security) 2.Java虚拟机JVM JVM可以看做一个以字节码为机器指令的CPU,它是Java语言的运行环境,正是JVM实现了Java语言的跨平台性。 源程序(*.java文件) →Java编译器→ 字节码(*.class文件) →类装载器→ 字节码校验器→解释器→操作系统平台 3.Java语言为什么是跨平台性? 因为Java程序编译之后的代码不是能被硬件系统直接运行的代码,而是一种“中间码”——字节码(.class file)。然后不同的硬件平台上安装有不同的Java虚拟机(JVM), 由JVM来把字节码(.class文件)再“翻译”成所对应的硬件平台能够执行的代码。因此对于Java编程者来说,不需要考虑硬件平台是什么。所以Java可以跨平台。实现了“一次编 译,随处运行”。 来源: https://www.cnblogs.com/zssblog/p/5929634.html

关于Java虚拟机JVM的简单了解

时光怂恿深爱的人放手 提交于 2020-02-08 20:35:31
JVM主要功能 Java是一种高级编程语言。 用高级语言编写的程序不能直接在任何机器上运行。 首先,需要将其翻译成特定的机器语言,javac编译器就专门来干这个事儿的,它把Java程序(含有的.java源代码文件)转换成机器代码(称为字节码或.class文件)。 Java虚拟机(JVM)是安装在我们计算机中的虚拟机,JVM自己的机器语言是字节码。 这样子Javac编译器就好处理啦,因为它只需要为JVM生成字节码就行了,而不是为每种类型的机器生成不同的机器代码。 JVM执行Javac编译器生成的字节码并生成输出就OK了。JVM正是java跨平台的原因。 所以,现在我们知道JVM的主要功能是执行编译器生成的字节码。 每个操作系统都有不同的JVM,但是在执行字节码后它们产生的输出在所有操作系统中都是相同的。 这意味着在Windows上生成的字节代码可以在Mac OS上运行,反之亦然。 这就是我们将java称为平台无关语言的原因,下图展示了这个过程: JVM总结: Java虚拟机(JVM)是在实际机器(您的计算机)上运行并执行Java字节代码的虚拟机。 JVM不了解Java源代码,这就是为什么我们需要使用javac编译器来编译* .java文件, 从而获取包含JVM理解的字节代码的* .class文件。 JVM使java可移植(一次编写,随处运行)。 每个操作系统都有不同的JVM

深入理解java虚拟机 第六章 类文件结构

[亡魂溺海] 提交于 2020-02-08 20:34:27
class类文件的结构   class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在class文件中,没有任何分隔符   class文件格式采用一种伪结构来存储数据,这个伪结构只有两种数据类型:     1 无符号数:基本的数据类型,可以用来描述数字、索引引用、数量值或者按照UTF-8编码构成字符串值     2 表:由多个无符号数或者其他表作为数据项构成的复合数据类型   魔数与Class文件的版本     每个Class文件的头4个字节称为魔数,它的唯一作用是确定这个文件是否为一个能被虚拟机接受的Class文件     紧接着魔数的4个字节存储的是Class文件的版本号   常量池     版本号之后是常量池,常量池可以理解为Class文件之中的资源仓库,它是与其他项目关联最多的数据类型,     也是占用空间最大的数据项目之一,还是Class文件中第一个出现的表类型数据项目   访问标志     常量池结束后,紧接着两个字节代表访问标志,这个标志用于识别一些类或者接口层次的访问信息   类索引、父类索引与接口索引集合     Class文件由这三项数据来确定这个类的继承关系   字段表集合     字段表用于描述接口或者类中声明的变量,包括类级变量和实例级变量   方法表集合     依次包括了访问标志、名称索引、描述符索引、属性表集合几项  

JAVA之内存结构

℡╲_俬逩灬. 提交于 2020-02-08 20:29:21
概述 JAVA是我们现在最常用的开发语言,而他的垃圾回收机制(Garbage Collection)的重要作用不言而喻,以下简称GC,所以了解GC至关重要,现本人对于GC机制以前的理解和现在的理解记录整理一下,供大家参考和指正。 说起GC机制,大部分人都把这项技术当做JAVA语言的伴生物。事实上,GC的历史比JAVA久远的多,比如:1960年诞生于MIT的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语言,当然本文只讲解JAVA的GC机制。废话到此为止。 除了基础知识的讲解还有本人之前的测试数据和测试日志,JDK的版本是:JDK1.8.0_131。 JVM简介 在JAVA程序中,GC运行在JVM虚拟机中的,所以有必要了解JVM的基础知识; 所有的开发人员在开发运行JAVA程序的时候,都会有这样的困惑,JVM虚拟机是JAVA的核心竞争力,他们的内存结构是什么样的呢?见下图,当然也是本人借鉴网上的: JVM内存结构主要有三大块:堆内存、方法区和栈。而堆内存就是JVM中最大的一块由年轻代和老年代组成,而年轻代又分为三部分,Eden空间、From Survivor空间、To Survivor空间,默认情况下年轻代按照8:1:1的比列来分配。 方法区存储类信息、常量、静态变量等数据,是线程共享的区域,为与Java堆区分,方法区还有一个别名Non-Heap(非堆)

python Flask系统开发-环境配置

梦想的初衷 提交于 2020-02-08 19:22:00
学习笔记 操作系统:window10 需要安装下载软件: 虚拟机 Virtualbox or Vmvare https://www.virtualbox.org/ XShell6 https://www.netsarang.com/zh/xshell/ 从官网下载即可,我下载安装的是Virtualbox和XShell6 数据库:MySQL 客户端工具SQLyog Python3 pycharm pycharm破解补丁及过程参考 https://mp.weixin.qq.com/s/eDaain71cNmft4Y_MlGBbA 学生用户申请一个,但是外网有点难登进去,申请还需要审核时间,放弃。 来源: CSDN 作者: Joanyxq 链接: https://blog.csdn.net/Joanyxq/article/details/104203416

如何解决VMware虚拟机无法连接网络的问题

ε祈祈猫儿з 提交于 2020-02-08 18:28:28
准备: 1.安装VMware Workstation最新版本(截至当前的VM版本为15.5.1); 2.安装虚拟机(笔者举例为Fedora)。 步骤: 1.点击编辑->虚拟网络编辑器 查看配置状态是是否跟上图一致,如果需要修改则点击更改设置。 2.如果上面配置正确无误,还无法连接网络时,则需要进入:虚拟机->设置,如下图所示 网络适配器->设备状态的两项都勾上,网络连接里选择第一个去桥接模式,并勾选复制物理玩咯连接状态,最后点击确定。 3.开打firefox,随便登陆一个网页查看网络是否恢复 或打开调试终端用ping命令验证。 来源: https://www.cnblogs.com/mengjinxiang/p/12284152.html

在VirtualBox下安装CentOS教程

杀马特。学长 韩版系。学妹 提交于 2020-02-08 18:17:47
使用的软件: VirtualBox 4.1.2 CentOS 5.6 x86_64 刻录的光盘 VirtualBox是开源的虚拟机软件,免费而且占用资源小,功能强大。先将VirtualBox安装上,这个和平常安装软件一样,就不详述了。 第一部分:安装前的准备工作 步骤1:点击“新建”按钮,创建一个新虚拟机。 步骤2:给虚拟机命名,选择操作系统及版本。 步骤3:选择内存大小,我这里设置的是512M 步骤4:选择创建新虚拟机。 步骤5:选择虚拟硬盘的类型。 步骤6:选择动态分配磁盘容量。 步骤7:选择文件存储的位置及容量大小。 步骤8:点击create即可。 步骤9:选择安装系统文件的位置 步骤10:选择安装介质,可以选择从光盘启动,也可以使用iso文件作为安装文件。 步骤11:设置网络,默认是NAT的网络连接方式,修改成桥接(Bridged Adapter)方式。 第二部分:开始正式安装系统 步骤1:选择刚创建的虚拟机,然后点击“开始”按钮。 步骤2:启动机器安装系统 步骤3:跳过媒体检查 步骤4:引导安装,点击next 步骤5:重新引导系统 步骤5:引导重启系统完成,输入用户名密码进入linux系统 来源: https://www.cnblogs.com/ms-grf/p/7184056.html