虚拟机

克隆虚拟机的相关配置【大数据学习起步阶段】

天涯浪子 提交于 2020-03-09 08:20:45
我们事先从他人或自己已经配置好的上边克隆一个配置完好的虚拟机,开启虚拟机,然后就要对虚拟机进行如下配置,供以后使用。 第一步: vi /etc/udev/rules.d/70-persistent-net.rules 目的:修改IP地址 更改三处内容: 1>删除第一个画圈部分;dd(快捷键) 2>复制第二个画圈部分;鼠标右键,复制 3>将第三个地方的1改为0;shift+$直接来到末尾,进入编辑模式,更改; 第二步: vi /etc/sysconfig/network-scripts/ifcfg-eth0 目的:修改配置 更改内容如下: 参考下图画圈部分是要注意的部分 将BOOTPROTO改为static 更改iPADDRI避免跟之前的冲突 将HWADDR改为之前复制的那个地址 删掉后边的网关和最后连接 第三步:更改主机名称 vi /etc/sysconfig/nginx 第四步:查看主机 vi /etc/hosts 搞定之后,可以reboot重启,就OK啦!!! 来源: CSDN 作者: 哥格 链接: https://blog.csdn.net/qq_44848986/article/details/104735449

JVM内存结构学习

丶灬走出姿态 提交于 2020-03-09 08:08:03
JVM内存结构学习 简介 JVM载执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。 Java 虚拟机所管理的内存一共分为Method Area(方法区)、VM Stack(虚拟机栈)、Native Method Stack(本地方法栈)、Heap(堆)、Program Counter Register(程序计数器)五个区域。 这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。具体如下图所示: 上图介绍的是JDK1.8 JVM运行时内存数据区域划分。1.8同1.7比,最大的差别就是:元数据区取代了永久代。元空间的本质和永久代类似,都是对JVM规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元数据空间并不在虚拟机中,而是使用本地内存。 程序计算器 、程序计数器(Program Counter Register)是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。在虚拟机概念模型中,字节码解释器工作时就是通过改变计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。 程序计数器是一块 “线程私有” 的内存,每条线程都有一个独立的程序计数器,能够将切换后的线程恢复到正确的执行位置。

Vue 底层编译实现

你说的曾经没有我的故事 提交于 2020-03-09 06:53:00
kvue源码 // 期待用法 // new KVue({ // data:{msg:'hello'} // }) class KVue { constructor(options) { this.$options = options; //处理data选项 this.$data = options.data; // 响应化 this.observe(this.$data); // new Watcher(); // this.$data.test; // new Watcher(); // this.$data.foo.bar; new Compile(options.el, this); if (options.created) { options.created.call(this); } } observe(value) { if (!value || typeof value !== 'object') { return; } // 遍历对象 Object.keys(value).forEach(key => { this.defineReactive(value, key, value[key]) // 代理到vm上 this.proxyData(key); }) } proxyData(key) { Object.defineProperty(this, key, {

【JVM.1】java内存区域与内存溢出

你离开我真会死。 提交于 2020-03-09 05:48:09
鲁迅曾说过:Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进来,墙里面的人想出去。 一.虚拟机内存分布 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。 1.  程序计数器(Program Counter Register)   程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的 字节码的行号指示器 。    由于Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,一个处理器都只会执行一条线程中的指令。因此,为了线程切换后能恢复到正确的执行位置,每条线程都有一个独立的程序计数器,各个线程之间计数器互不影响,独立存储。称之为“线程私有”的内存。程序计数器内存区域是虚拟机中唯一没有规定OutOfMemoryError情况的区域。 2.  Java虚拟机栈(Java Virtual Machine Stacks)   java虚拟机也是 线程私有 的,它的生命周期和线程相同。虚拟机栈描述的是Java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储 局部变量表、操作数栈、动态链接、方法出口 等信息。   咱们常说的堆内存、栈内存中,栈内存指的就是虚拟机栈。 局部变量表存 放了编译期可知的各种 基本数据类型 (8个基本数据类型)、 对象引用

java虚拟机内存区域详解

拈花ヽ惹草 提交于 2020-03-09 05:31:56
Java虚拟机在执行java程序的过程中,会将它所管理的内存区域划分为若干个不同的数据区域。主要分为以下几个区域: 方法区:和堆一样,为多个线程共享,它用于存储类信息、常量、静态常量和即时编译后的代码等数据。 虚拟机栈:用于存储局部变量、操作栈、动态链接、方法出口等信息。 本地方法栈:本地方法栈和Java虚拟机栈发挥的作用非常相似,主要区别是Java虚拟机栈执行的是Java方法服务,而本地方法栈执行Native方法服务(通常用C编写)。 堆:是被所有线程共享的最大的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。 程序计数器:当前线程所执行的字节码的行号指示器,程序计数器是线程隔离的,每一个线程在工作的时候都有一个独立的计数器。程序计数器的特性 (1)程序计数器具有线程隔离性 (2)程序计数器占用的内存空间非常小,可以忽略不计 (3)程序计数器是java虚拟机规范中唯一一个没有规定任何OutofMemeryError的区域 (4)程序执行的时候,程序计数器是有值的,其记录的是程序正在执行的字节码的地址 (5)执行native本地方法时,程序计数器的值为空。原因是native方法是java通过jni调用本地C/C++库来实现,非java字节码实现,所以无法统计 来源: https://www.cnblogs.com

Java基础教程:Java内存区域

拥有回忆 提交于 2020-03-09 05:28:41
Java基础教程:Java内存区域 运行时数据区域   Java虚拟机 在执行Java程序的过程种会把它所管理的内存划分为若干个不同的数据区域 。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。   根据《Java虚拟机规范》,Java虚拟机管理的内存将会包括以下几个运行时数据区域    程序计数器   程序技术器是一块较小的内存空间,可 视为当前线程所执行的字节码的行号计时器 。   在多线程开发中,为了线程切换后能恢复到正确的执行位置, 每条线程都需要有一个独立的程序技术器 ,各条线程之间的技术器互不影响,独立存储,我们称这类内存区域为“线程私有”的内存。   如果 当前线程执行的不是Java方法,而是Native方法,则这个计数器值为空。   该区域是唯一一个不存在OutOfMemoryError情况的区域。 Java虚拟机栈   同程序计时器一样,Java虚拟机栈也是线程私有的,他的生命周期与线程相同。虚拟机栈描述是Java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。 每一个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程 。 TIPS: 我们常把内存划分为堆和栈,其中栈就是指的Java虚拟机栈

《深入java虚拟机》读后(1)

时光怂恿深爱的人放手 提交于 2020-03-09 05:20:58
第二章 java内存区域与内存溢出异常 一、运行时数据区域 1. 程序计数器:当前线程所执行的字节码的行号指示器。(线程私有) 2. java虚拟机栈:描述java方法执行的内存模型。(线程私有) 每个方法在执行的同时都会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每个方法从调用直至执行完成的过程,就对应一个栈帧在虚拟机栈中入栈和出栈的过程。 3. 本地方法栈:描述虚拟机使用到的native方法的内存模型。(线程私有) 4. java堆:存放对象实例。垃圾收集器管理的主要区域。 5. 方法区:存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等。 运行时常量池是方法区的一部分。用于存放编译时期产生的各种字面量和符号引用,这部分内容将在类加载后进入方法区的运行时常量池存放。(具备动态性) 6. 直接内存:本机直接内存。 二、 HotSpot虚拟机中对象 1. 对象的创建 1)虚拟机遇到一条new指令。 2)检查这个指令的参数能否在常量池中定位到类的符号引用,并检查这个符号引用代表的类是否被加载、解析和初始化过。 3)给对象分配内存。(在类加载完成后已确定所需内存大小) 4)虚拟机将分配到的内存空间初始化为零值。(确保对象的实例字段在java代码中可以不赋初始值就直接使用) 5)设置对象(对象头) 6)执行<init>方法 注

JVM运行时数据区域

三世轮回 提交于 2020-03-09 05:17:22
一、运行时数据区域 相应脑图 程序计数器 记录正在执行的虚拟机字节码指令的地址(如果正在执行的是本地方法则为空)。 Java 虚拟机栈 每个 Java 方法在执行的同时会创建一个 栈帧 用于 存储局部变量表 、 操作数栈 、 常量池引用等信息 。 从方法调用直至执行完成的过程,就对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。 对于执行引擎来说,活动线程中,只有栈顶的栈帧是有效的,称为 当前栈帧 ,这个栈帧所关联的方法称为 当前方法 。 执行引擎所运行的所有字节码指令都只针对当前栈帧进行操作。 操作数栈: 一个后进先出(Last-In-First-Out)的操作数栈,也可以称之为表达式栈(Expression Stack)。 操作数栈和局部变量表在访问方式上存在着较大差异,操作数栈并非采用访问索引的方式来进行数据访问的, 而是**通过标准的入栈和出栈操作来完成一次数据访问**。 每一个操作数栈都会拥有一个明确的栈深度用于存储数值,一个32bit的数值可以用一个单位的栈深度来存储,而2个单位的栈深度则可以保存一个64bit的数值, 当然操作数栈所需的容量大小在编译期就可以被完全确定下来,并保存在方法的Code属性中。 可以通过 -Xss 这个虚拟机参数来指定每个线程的 Java 虚拟机栈内存大小: java -Xss512M HackTheJava 该区域可能抛出以下异常:

jvm02

风格不统一 提交于 2020-03-09 05:16:50
java虚拟机内存管理 每个线程就是一个顺序的执行单元,线程共享区即多个线程共享同一块区域,线程独占区即每个线程都有自己的虚拟机栈,本地方法栈,程序计数器。 程序计数器是一个比较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器,位于线程独占区,如果线程执行的是java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址,如果执行的是native方法,计数器的值为underfined Java虚拟机栈 虚拟机描述的是java方法执行的动态内存模型 栈帧 每个方法执行,都会创建一个栈帧,伴随着方法从创建到执行完成,用于存储变量表,操作数栈,动态链接,方法出口等。 局部变量表 存储编译期可知的各种基本数据类型,引用类型,returnAddress类型, 局部变量表的内存空间在编译期完成分配,当进入一个方法,这方法需要在帧分配多少内存是固定的,在方法运行期是不会改变局部变量表的大小(存储的只是对象的引用) 1 public class Demo { 2 3 public void tes() { 4 System.out.println("方法执行...."); 5 tes(); 6 } 7 8 public static void main(String[] args) { 9 new Demo().tes(); 10 11 } 12 13 } 方法执行.... 方法执行.

一、JVM — Java内存区域

前提是你 提交于 2020-03-09 05:16:11
Java 内存区域详解 写在前面 (常见面试题) 基本问题 拓展问题 一 概述 二 运行时数据区域 2.1 程序计数器 2.2 Java 虚拟机栈 2.3 本地方法栈 2.4 堆 2.5 方法区 2.5.1 方法区和永久代的关系 2.5.2 常用参数 2.5.3 为什么要将永久代 (PermGen) 替换为元空间 (MetaSpace) 呢? 2.6 运行时常量池 2.7 直接内存 三 HotSpot 虚拟机对象探秘 3.1 对象的创建 Step1:类加载检查 Step2:分配内存 Step3:初始化零值 Step4:设置对象头 Step5:执行 init 方法 3.2 对象的内存布局 3.3 对象的访问定位 四 重点补充内容 4.1 String 类和常量池 4.2 String s1 = new String("abc");这句话创建了几个字符串对象? 4.3 8 种基本类型的包装类和常量池 参考 Java 内存区域详解 如果没有特殊说明,都是针对的是 HotSpot 虚拟机。 写在前面 (常见面试题) 基本问题 介绍下 Java 内存区域(运行时数据区) Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么) 对象的访问定位的两种方式(句柄和直接指针两种方式) 拓展问题 String 类和常量池 8 种基本类型的包装类和常量池 一 概述 对于 Java