虚拟机_虚拟机linux - CSDN
虚拟机 订阅
虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能够完成的工作在虚拟机中都能够实现。在计算机中创建虚拟机时,需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量。每个虚拟机都有独立的CMOS、硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作。 [1] 展开全文
虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能够完成的工作在虚拟机中都能够实现。在计算机中创建虚拟机时,需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量。每个虚拟机都有独立的CMOS、硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作。 [1]
信息
中文名
虚拟机
常见虚拟机
Java虚拟机,Linux虚拟机,windows虚拟机
与实体机区别
可以像使用实体机一样使用
外文名
Virtual Machine
定    义
具有完整硬件系统功能的完整计算机系统
技 术
虚拟化技术的一种
虚拟机虚拟机技术
虚拟机技术是虚拟化技术的一种,所谓虚拟化技术就是将事物从一种形式转变成另一种形式,最常用的虚拟化技术有操作系统中内存的虚拟化,实际运行时用户需要的内存空间可能远远大于物理机器的内存大小,利用内存的虚拟化技术,用户可以将一部分硬盘虚拟化为内存,而这对用户是透明的。又如,可以利用虚拟专用网技术(VPN)在公共网络中虚拟化一条安全,稳定的“隧道”,用户感觉像是使用私有网络一样。 [2] 
收起全文
  • 进入主页选择创建新的虚拟机 这里选择自定义安装,下一步即可。 可以根据需要选择版本 选择完成后,下一步 选择安装程序映像文件,浏览到自己下载的镜像文件,下一步即可 自定义虚拟机名称,以及虚拟机存储在...

    VMware安装好之后,下载好我们要安装的操作系统的镜像文件后,此处安装的为centos7版本,就可以开始安装了。
    进入主页选择创建新的虚拟机
    在这里插入图片描述
    这里选择自定义安装,下一步即可。
    在这里插入图片描述
    可以根据需要选择版本
    在这里插入图片描述
    选择完成后,下一步
    在这里插入图片描述
    选择安装程序映像文件,浏览到自己下载的镜像文件,下一步即可
    在这里插入图片描述
    自定义虚拟机名称,以及虚拟机存储在主机的路径,下一步即可
    在这里插入图片描述
    根据需要配置处理器内核数
    在这里插入图片描述
    制定宿主机允许虚拟机存储的内存
    在这里插入图片描述
    指定网络连接模型
    后续全都下一步到完成
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
    完成即可开始安装操作系统
    在这里插入图片描述
    选择第一条安装centos7
    在这里插入图片描述
    直接继续就可以了
    在这里插入图片描述
    点击安装相关组件
    在这里插入图片描述
    点击左上角Done
    再选择磁盘分区
    在这里插入图片描述
    系统自动分区选择Automatically configure partitioning
    有需要自己手动分区选择i will configure partitioning,就会跳转到分区界面
    这里选择系统自动分区,完成后点击开始安装
    在这里插入图片描述
    在这里插入图片描述
    设置root密码-获取root权限需要、和用户名密码-登录需要。
    安装完成后reboot就可以了。
    在这里插入图片描述
    在这里插入图片描述
    点击上面的协议进入后选择我同意
    在这里插入图片描述
    点击下面的连接,选择打开有线连接
    在这里插入图片描述
    然后选择完成后就可以到登陆界面输入刚刚设置的密码即可登录进入centos7图形界面
    在这里插入图片描述
    分享一个快捷键

    图形界面到dos命令行:ctrl+alt+f2
    dos命令行到图形界面:输入startx
    
    如果连不上网可以试着将IP设置为静态ip!!!!
    展开全文
  • 虚拟机就是一个软件,模拟一个电脑来使用。让初级的小白也能学会使用虚拟机,并且能够精通。本课程由浅入深,详细讲解了虚拟机的安装导入使用,用黑客喜欢的KALI系统进行导入演示。
  • VMware是一个强大的虚拟机,可以在一台电脑上模拟真实的环境,创建出一个虚拟机系统,并且可以在这个系统进行测试和其他的操作,当然你也可以直接网上下载现成的虚拟机镜像或者,网络上有很多的Ghost等文件,这类...

    摘要: 

    VMware是一个强大的虚拟机,可以在一台电脑上模拟真实的环境,创建出一个虚拟机系统,并且可以在这个系统进行测试和其他的操作,当然你也可以直接网上下载现成的虚拟机镜像或者,网络上有很多的Ghost等文件,这类系统可能经过别人一些优化,但是优化的过程可能阉割了某些系统的文件,或者被植入一些广告等,文本一步步详细说明如何利用VMware12安装一个Win7系统,虚拟机win7镜像文件iso下载以及详细安装过程。

    首先你电脑必须安装了 VMware ,推荐版本 VMware12 或者 VMware 11 版本,然后你还需要一个系统镜像,可以通过下面链接下载 Win7 的镜像,复制链接,打开迅雷新建任务即可下载:

    Windows7 64位

    1

    ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso|3420557312|B58548681854236C7939003B583A8078|/

    Windows7 32位

    1

    ed2k://|file|cn_windows_7_ultimate_with_sp1_x86_dvd_u_677486.iso|2653276160|7503E4B9B8738DFCB95872445C72AEFB|/

    若是不会使用上面的链接,也可以通过系统之家下载:

    链接:http://xt.scjzzs3.cn/

    一、虚拟里面创建新的虚拟机

    1.打开虚拟机,这里是 VMware 12,新建虚拟机,选择自定义,点击下一步,自定义可以更好的配置虚拟机的各项参数;
    VMware_Win7_01

    2.虚拟机硬件兼容性,默认即可,如果你需要建一个虚拟机,而且这个虚拟机可能需要在多台电脑使用,或者你可能将虚拟机拷贝给朋友使用,为了防止其他电脑不能正常的使用,推荐使用 Workstations 11,因为12的只支持64位的系统,如果你只是测试或者只在本机使用就不用担心这个问题,直接默认,然后点击下一步;

    VMware_Win7_02

    3.安装来源:选择稍后安装操作系统,如果这个时候选择了镜像,VMware 将会帮你简易安装,为了更详细配置,这里选择稍后,然后点击下步;

    VMware_Win7_03

    4.客户机操作系统:本文章讲解的是 Win7,故选择 Windows 7 系统,根据自己的需要可以进一步选择是32位的 Win7 还是64位的 Windows7 ,Windows 7 X64 就是64位的 Windows 7 系统,然后点击下一步;

    VMware_Win7_04

    5.虚拟机名称:默认,也可以自己写,位置:推荐存储在非系统盘 C 盘,虚拟机需要占大量的空间,所以存在非系统盘,防止日后系统盘空间不足;

    VMware_Win7_05

    6.固件类型:选择 BIOS,点击下一步;

    VMware_Win7_06

    7.处理器:处理器数量 1 个,处理器核心数调为 2 个,如果你的电脑配置较高的,可以适当增加一个处理器数量,当然实际的性能取决于物理机,并非多核越好;

    VMware_Win7_07

    8.内存:内存是比较重要一个参数,虚拟机很耗内存,如果你物理机内存比较大,比如 6G 或者 8G ,可能给虚拟机分配个 2G 的内存,如果你的内存比较小,那么不要分配太大,建议直接默认就行了,VMware 会帮你判断;

    VMware_Win7_08

    9.网络连接:使用网络地址转换(NAT),这个是最常见的模式,如果需要在虚拟机里面拨号或者其他网络操作,再去使用桥接等模式;

    VMware_Win7_09

    10.SCSI控制器:LSI Logic SAS ,默认即可

    VMware_Win7_10

    11.虚拟磁盘类型:SCS;

    VMware_Win7_11

    12.磁盘:创建新的虚拟磁盘;

    VMware_Win7_12

    13.磁盘大小:默认 60 G即可,也可以适当调大,假设你设置了 60 G,并不会马上占据硬盘 60 G,这个是弹性的变化,最大 60 G,所以可以根据自己需要改变大小,为了更好的性能,选择将虚拟磁盘存储为单个文件,一般电脑都支持的,除非你的硬盘还是 FAT 格式,单个文件性能更高;

    VMware_Win7_13

    14.磁盘文件默认,点击下一步;

    VMware_Win7_14

    15.确认界面,点击自定义硬件;

    VMware_Win7_15

    16.打印机一般很少在虚拟机里面使用,选择打印机,点击移除;

    VMware_Win7_16

    17.点击 CD/DVD 选项,进行系统映像文件;

    VMware_Win7_17

    18.在 ISO 映像文件路径选择上面提到的 Win7 的镜像,当然你也可以网上下载别人制作的虚拟机镜像或者 Ghost文件安装,这样比较快,不过笔者推荐,自己安装微软发布的原版 Win7 这样比较稳定,使用的时候基本不会出现什么问题,选择文件后点击关闭;

    VMware_Win7_18

    19.回到刚才的界面,点击完成;

    VMware_Win7_19

    20.此时可以看到虚拟机的配置界面,确认好 CD/DVD 已经加载文件,然后点击开启此虚拟机,然后正式进行 Win7 的安装;

    VMware_Win7_19

     

    二、虚拟机安装 Win7 系统

    21.虚拟机的启动跟电脑启动差不多,随后看到安装界面;

    VMware_Win7_21

    22.在安装界面,选择现在安装;

    VMware_Win7_22

    23.接受许可条款,点击下一步;

    VMware_Win7_23

    24.安装类型选择:自定义(高级)

    VMware_Win7_24

    25.因为磁盘是空的,从来没有用过,VMware 模拟的跟真实的机器一样,所以没有分区,选中磁盘,选择驱动器选项;

    VMware_Win7_25

    26.点击新建,接下来就是进行磁盘的分区,上面分配的 60 G,所以笔者打算给 C 盘分配 20 G ,D 盘分配 40 G 左右;

    VMware_Win7_26

    27.输入数值, C 盘为 20 G ,理论上讲应该写 20480,但是硬盘计算不是这样计算的,实际的计算 20 G 为 20482M,另外 Win7 系统保留 100 M,所以 20582 这个数值是这样来的,当然没有强迫真的话,不必要纠结于此,输入数值之后点击应用;

    VMware_Win7_27

    28.提示创建分区之后会弹出一个提示,提示 Win7 会保留分区,点击确定;

    VMware_Win7_28

    29.看到多了一个系统保留的分区,不用管,在未分配的空间磁盘上选中,然后直接点击应用,这样自动全部用掉剩下的磁盘空间;

    VMware_Win7_29

    30.然后分别选中每个分区,然后点击格式化,记得全部格式化一遍,用这个格式化,系统会自动使用最优的 4 K 对齐;

    VMware_Win7_30

    31.全部格式化完毕之后,选中 20 G 这个磁盘,然后点击下一步,接下去系统就会安装在这个磁盘上;

    VMware_Win7_31

    32.正式进入 Win7 安装的界面,需要耐心等待十几分钟;

    VMware_Win7_32

    33.到了这个界面需要用户手动输入用户名,自己输入一个喜欢的用户名,然后计算机名字可以不用改,也可以自己定义,点击下一步;

    VMware_Win7_33

    34.输入密码接,直接点击下一步;

    VMware_Win7_34

    35.产品密钥直接跳过;

    VMware_Win7_35

    36.选择以后询问我;

    VMware_Win7_36

    37.时区默认,下一步;

    VMware_Win7_37

    38.若是弹网络选择,直接选择公用网络,以后就不会再提示了,家庭共享功能很少用到;

    VMware_Win7_38

    39.等待初始化桌面;

    VMware_Win7_39

    40.看到 Win7 已经安装完毕了;

    VMware_Win7_40

     

    三、简单优化 Win7 系统:

    41.此时虽然已经安装完毕,但是还是需要一些简单的优化设置,比如关闭 UAC、备份等功能。如果需要使用超级管理员权限,这个时候可以切换账号,这里不进行切换,使用标准账户。进入优化步骤,首先在开始菜单,搜索框输入 UAC ,打开账户权限控制;

    VMware_Win7_41

    42.在用户账户控制设置,将滑块滑到最低处;

    VMware_Win7_42

    43.弹出的提示选择确定;

    VMware_Win7_43

    44.回到开始菜单,单击控制面板;

    VMware_Win7_44

    45.单击系统和安全,进入配置;

    VMware_Win7_45

    46.首先关闭 Windows Update 功能,虚拟机一般用于测试,不需要进行更新,单击 Windows Update ;

    VMware_Win7_46

    47.在左边的菜单,点击更改设置;

    VMware_Win7_47

    48.选择从不更新,点击确定;

    VMware_Win7_48

    49.回到控制面板,点击 Windows 防火墙,关闭防火可以避免一些问题的发生, 比如服务器的配置等;

    VMware_Win7_48

    50.点击左侧打开或关闭 Windows 防火墙

    VMware_Win7_50

    51.如下图,两个都选择关闭 Windows 防火墙

    VMware_Win7_51

    52.回到控制面板,打开操作中心;

    VMware_Win7_52

    53.点击左侧更改用户账户控制设置;

    VMware_Win7_53

     

    54.去掉下图的所有勾选,点击确定;VMware_Win7_54

     

    55.真正纯净版的 Win7 默认只有一个图标就是回收站,在桌面空白处,右键选择个性化,在打开的菜单,更改桌面图标;VMware_Win7_55

     

    56.勾选计算机、用户的文件、回收站图标,点击确定;VMware_Win7_56

     

    57.此时桌面就是我们熟悉的桌面了;VMware_Win7_57

     

    58.接下来关闭备份功能,系统自带的备份比较鸡肋,推荐关闭,在计算机图标上右键,选择属性;VMware_Win7_58

     

    59.点击系统保护,看到保护设置里面 C 盘是打开的,点击配置;VMware_Win7_59

     

    60.选择关闭系统保护,点击确定如果弹出的提示确定删除,然后再次确定;VMware_Win7_60

     

    61.确定禁用,这样就可以,到此为止优化的差不多了,差最后一步,就是激活 Win7 ,激活篇幅较长,请查看《Win7 激活工具激活系统》;VMware_Win7_61

     

    62.系统已经全部简单优化完了,接下来需要做的事情是安装 VMware Tools ,没有安装 VMware Tools 就不能进行文件的拖拽,而且不能自动伸缩屏幕,在虚拟机的选项卡处,鼠标点击右键;VMware_Win7_62

     

    63.在电脑的资源管理器里面看到多了一个 DVD 的,双击就可以进行安装,如果没有自动安装,进入磁盘,运行安装程序;VMware_Win7_63

     

     

    64.根据提示一步步进行安装,全部默认即可;VMware_Win7_63

     

    65.安装需要一点点时间;VMware_Win7_65

     

     

    66.直到最后一步安装完成了,点击完成,然后重启一下里面的系统,然后就可以各种拉伸和拖拽复制文件了;VMware_Win7_66

     

    67.刚刚安装的系统可以进行一些个人需要的软件简单的安装,比如 WinRAR,输入法之类的软件。然后关闭里面的虚拟机,我们给虚拟机做个备份,首先创建快照,先关机,记得关机再创建这样磁盘消耗会小一点,然后在选项卡上选择管理,然后点击清理磁盘;VMware_Win7_67

     

    68.会看到一个可回收的空间,这个空间有时候会很大,尤其是使用久了之后,点击立即清理;VMware_Win7_68

     

    69.继续回到选项卡,点击快照,并创建一个快照;VMware_Win7_69

    70.快照的名字随便起,快照就是一个备份的意思,日后可以快速回到这个快照时间点,建立快照之后以后系统出问题,方便倒退,直接回复快照即可。VMware_Win7_70

     

    到此为止 VMware 12 安装 Win7 的教程,全部完成,好好使用虚拟机带来的便捷吧!

    觉得教程有用、喜欢的朋友们,可以点赞关注一下博主,多谢大家支持!

    展开全文
  • VMware虚拟机下载与安装 导读: 本文主要介绍了VMware桌面虚拟计算机软件及其下载和安装的方法。 win10操作系统; 一、虚拟机 虚拟机是通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机...

    VMware虚拟机下载与安装

    导读:
    本文主要介绍了VMware桌面虚拟计算机软件及其下载和安装的方法。
    win10操作系统;

    一、虚拟机

    虚拟机是通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在虚拟机中,你可以安装各种操作系统、组建局域网等,模拟的完全是一个真实系统环境,不会对宿主机造成危害。 常用流行的虚拟机软件有VMware、Virtual Box和Virtual PC,其中VMware是全球领先的虚拟云计算产品服务商。
      VMwareWorkStation 桌面虚拟计算机软件,能够让用户在单一主机同时运行多个不同的操作系统,建议不要安装最新的版本因为不稳定、可能会发生未知的错误。
      此处采用的虚拟机版本是:VMware-workstation-full-12.5.7-5813279

    二、VMware下载链接

    百度云里的是VMware-12.5.7,含密钥。如有安装其他版本的需要,可到官网自行下载。
    VMware百度云下载
    提取码:f3mj

    VMware官网下载

    三、虚拟机的安装
    1.打开.exe文件, 即可开始安装。点击下一步
    在这里插入图片描述

    2.接受许可条款,点击下一步
    在这里插入图片描述
    3.选择安装位置,建议不要安装在C盘,点击下一步
    在这里插入图片描述
    4.这两项可以选也可以不选,这里我们不打勾
    在这里插入图片描述
    5.创建快捷方式,点击下一步
    在这里插入图片描述
    6.点击安装
    在这里插入图片描述
    7.百度云中有密钥,选择许可证
    在这里插入图片描述
    8.选择百度云中准备好的密钥,点击输入
    在这里插入图片描述
    9.大功告成!
    在这里插入图片描述

    下一篇:VMware安装CentOS7.4

    展开全文
  • 1. JVM生命周期 启动。启动一个Java程序时,一个JVM实例就产生了,任何一个拥有public static void main(String[] args)函数的class都可以作为JVM实例运行的起点。 运行。main()作为该程序初始线程的起点,任何...

    1. JVM生命周期

    • 启动。启动一个Java程序时,一个JVM实例就产生了,任何一个拥有public static void main(String[] args)函数的class都可以作为JVM实例运行的起点。
    • 运行。main()作为该程序初始线程的起点,任何其他线程均由该线程启动。
    • 消亡。当程序中的所有非守护线程都终止时,JVM才退出;若安全管理器允许,程序也可以使用Runtime类或者System.exit()来退出。

      一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序。程序开始执行时他才运行,程序结束时他就停止。你在同一台机器上运行三个程序,就会有三个运行中的Java虚拟机。 Java虚拟机总是开始于一个main()方法,这个方法必须是公有、返回void、直接受一个字符串数组。在程序执行时,你必须给Java虚拟机指明这个包换main()方法的类名。main()方法是程序的起点,他被执行的线程初始化为程序的初始线程。程序中其他的线程都由他来启动。

      Java中的线程分为两种:守护线程 (daemon)和普通线程(non-daemon)。守护线程是Java虚拟机自己使用的线程,比如负责垃圾收集的线程就是一个守护线程。当然,你也可以把自己的程序设置为守护线程。包含main()方法的初始线程不是守护线程。

      只要Java虚拟机中还有普通的线程在执行,Java虚拟机就不会停止。如果有足够的权限,你可以调用exit()方法终止程序。

     

    2. JVM体系结构

      1) 类装载器(ClassLoader)(用来装载.class文件)

      2) 执行引擎(执行字节码,或者执行本地方法)

      3) 运行时数据区(方法区、堆、java栈、PC寄存器、本地方法栈)

     

    3. JVM运行时数据区

    3.1 Java堆(Heap)

    • 被所有线程共享的一块内存区域,在虚拟机启动时创建
    • 用来存储对象实例
    • 可以通过-Xmx和-Xms控制堆的大小
    • OutOfMemoryError异常:当在堆中没有内存完成实例分配,且堆也无法再扩展时。

      java堆是垃圾收集器管理的主要区域。java堆还可以细分为:新生代(New/Young)、旧生代/年老代(Old/Tenured)。持久代(Permanent)在方法区,不属于Heap。

     

    新生代:新建的对象都由新生代分配内存。常常又被划分为Eden区和Survivor区。Eden空间不足时会把存活的对象转移到Survivor。新生代的大小可由-Xmn控制,也可用-XX:SurvivorRatio控制Eden和Survivor的比例。

    旧生代:存放经过多次垃圾回收仍然存活的对象。

    持久代:存放静态文件,如今Java类、方法等。持久代在方法区,对垃圾回收没有显著影响。

    3.2 方法区

    • 线程间共享
    • 用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据
    • OutOfMemoryError异常:当方法区无法满足内存的分配需求时
    • 运行时常量池

      • 方法区的一部分
      • 用于存放编译期生成的各种字面量与符号引用,如String类型常量就存放在常量池
      • OutOfMemoryError异常:当常量池无法再申请到内存时

    3.3 java虚拟机栈(VM Stack)

    • 线程私有,生命周期与线程相同
    • 存储方法的局部变量表(基本类型、对象引用)、操作数栈、动态链接、方法出口等信息。
    • java方法执行的内存模型,每个方法执行的同时都会创建一个栈帧,每一个方法被调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。
    • StackOverflowError异常:当线程请求的栈深度大于虚拟机所允许的深度
    • OutOfMemoryError异常:如果栈的扩展时无法申请到足够的内存

      JVM栈是线程私有的,每个线程创建的同时都会创建JVM栈,JVM栈中存放的为当前线程中局部基本类型的变量、部分的返回结果以及Stack Frame。其他引用类型的对象在JVM栈上仅存放变量名和指向堆上对象实例的首地址

    3.4 本地方法栈(Native Method Stack)

    • 与虚拟机栈相似,主要为虚拟机使用到的Native方法服务,在HotSpot虚拟机中直接把本地方法栈与虚拟机栈二合一

    3.5 程序计数器(Program Counter Register)

    • 当前线程所执行的字节码的行号指示器
    • 当前线程私有
    • 不会出现OutOfMemoryError情况

    3.6 直接内存(Direct Memory)

    • 直接内存并不是虚拟机运行的一部分,也不是Java虚拟机规范中定义的内存区域,但是这部分内存也被频繁使用
    • NIO可以使用Native函数库直接分配堆外内存,堆中的DirectByteBuffer对象作为这块内存的引用进行操作
    • 大小不受Java堆大小的限制,受本机(服务器)内存限制
    • OutOfMemoryError异常:系统内存不足时

      总结:Java对象实例存放在堆中;常量存放在方法区的常量池;虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据放在方法区;以上区域是所有线程共享的。栈是线程私有的,存放该方法的局部变量表(基本类型、对象引用)、操作数栈、动态链接、方法出口等信息。

      一个Java程序对应一个JVM,一个方法(线程)对应一个Java栈。

     

    4. Java代码的编译和执行过程

    Java代码的编译和执行包括了三个重要机制:

    (1)Java源码编译机制(.java源代码文件 -> .class字节码文件)

    (2)类加载机制(ClassLoader)

    (3)类执行机制(JVM执行引擎)

     

    4.1 Java源码编译机制

      Java源代码是不能被机器识别的,需要先经过编译器编译成JVM可以执行的.class字节码文件,再由解释器解释运行。即:Java源文件(.java) -- Java编译器 --> Java字节码文件 (.class) -- Java解释器 --> 执行。流程图如下:

      字节码文件(.class)是平台无关的。

      Java中字符只以一种形式存在:Unicode。字符转换发生在JVM和OS交界处(Reader/Writer)。

      最后生成的class文件由以下部分组成:

    • 结构信息。包括class文件格式版本号及各部分的数量与大小的信息
    • 元数据。对应于Java源码中声明与常量的信息。包含类/继承的超类/实现的接口的声明信息、域与方法声明信息和常量池
    • 方法信息。对应Java源码中语句和表达式对应的信息。包含字节码、异常处理器表、求值栈与局部变量区大小、求值栈的类型记录、调试符号信息

    4.2 类加载机制(ClassLoader)

      Java程序并不一个可执行文件,是由多个独立的类文件组成。这些类文件并非一次性全部装入内存,而是依据程序逐步载入

      JVM的类加载是通过ClassLoader及其子类来完成的,类的层次关系和加载顺序可以由下图来描述:

     

    (1)Bootstrap ClassLoader

    • JVM的根ClassLoader,由C++实现
    • 加载Java的核心API:$JAVA_HOME中jre/lib/rt.jar中所有class文件的加载,这个jar中包含了java规范定义的所有接口以及实现。
    • JVM启动时即初始化此ClassLoader

     (2)Extension ClassLoader

    •  加载Java扩展API(lib/ext中的类)

    (3)App ClassLoader

    • 加载Classpath目录下定义的class

    (4)Custom ClassLoader

    • 属于应用程序根据自身需要自定义的ClassLoader,如tomcat、jboss都会根据J2EE规范自行实现ClassLoader

      

      加载过程中会先检查类是否被已加载,检查顺序是自底向上,从Custom ClassLoader到BootStrap ClassLoader逐层检查,只要某个classloader已加载就视为已加载此类,保证此类只所有ClassLoader加载一次。而加载的顺序是自顶向下,也就是由上层来逐层尝试加载此类。

     

    双亲委派机制

      JVM在加载类时默认采用的是双亲委派机制。通俗的讲,就是某个特定的类加载器在接到加载类的请求时,首先将加载任务委托给父类加载器,依次递归。如果父类加载器可以完成类加载任务,就成功返回;只有父类加载器无法完成此加载任务时,才自己去加载。

      作用:1)避免重复加载;2)更安全。如果不是双亲委派,那么用户在自己的classpath编写了一个java.lang.Object的类,那就无法保证Object的唯一性。所以使用双亲委派,即使自己编写了,但是永远都不会被加载运行。

     

    破坏双亲委派机制

      双亲委派机制并不是一种强制性的约束模型,而是Java设计者推荐给开发者的类加载器实现方式。

      线程上下文类加载器,这个类加载器可以通过java.lang.Thread类的setContextClassLoader()方法进行设置,如果创建线程时还未设置,它将会从父线程中继承一个,如果在应用程序的全局范围内都没有设置过的话,那么这个类加载器就是应用程序类加载器。像JDBC就是采用了这种方式。这种行为就是逆向使用了加载器,违背了双亲委派模型的一般性原则。
     

    4.3 类执行机制

    Java字节码的执行是由JVM执行引擎来完成,流程图如下所示:

      JVM是基于栈的体系结构来执行class字节码的。线程创建后,都会产生程序计数器(PC)和栈(Stack),程序计数器存放下一条要执行的指令在方法内的偏移量,栈中存放一个个栈帧,每个栈帧对应着每个方法的每次调用,而栈帧又是有局部变量区和操作数栈两部分组成,局部变量区用于存放方法中的局部变量和参数,操作数栈中用于存放方法执行过程中产生的中间结果。

     

    主要的执行技术:解释,即时编译,自适应优化、芯片级直接执行

    • 解释属于第一代JVM,
    • 即时编译JIT属于第二代JVM,
    • 自适应优化(目前Sun的HotspotJVM采用这种技术)则吸取第一代JVM和第二代JVM的经验,采用两者结合的方式

      开始对所有的代码都采取解释执行的方式,并监视代码执行情况。对那些经常调用的方法启动一个后台线程,将其编译为本地代码,并进行优化。若方法不再频繁使用,则取消编译过的代码,仍对其进行解释执行。

     

    5. JVM垃圾回收(GC)

    GC的基本原理:将内存中不再被引用的对象进行回收,GC中用于回收的方法称为收集器。垃圾:不再被引用的对象。

    由于GC需要消耗一些资源和时间,Java在对对象的生命周期特征进行分析后,按照新生代、旧生代的方式来对对象进行收集,以尽可能的缩短GC对应用造成的暂停。

    • 对新生代的对象的收集称为minor GC;
    • 对旧生代的对象的收集称为Full GC;
    • 程序中主动调用System.gc()的GC为Full GC。

      Java垃圾回收是单独的后台线程gc执行的,自动运行无需显示调用。即使主动调用了java.lang.System.gc(),该方法也只会提醒系统进行垃圾回收,但系统不一定会回应,可能会不予理睬。

     

    判断一块内存空间是否符合回收标准:

    (1)对象赋予了空值,且之后再未调用(obj = null;)

    (2)对象赋予了新值,即重新分配了内存空间(obj = new Obj();)

     

    内存泄漏:程序中保留着对永远不再使用的对象的引用。因此这些对象不回被GC回收,却一直占用内存空间却毫无用处。即:1)对象是可达的;2)对象是无用的。满足这两个条件即可判定为内存泄漏。

      应确保不需要的对象不可达,通常采用将对象字段设置为null的方式,或从容器collection中移除对象。局部变量不再使用时无需显示设置为null,因为对局部变量的引用会随着方法的退出而自动清除。

    内存泄露的原因:1)全局集合;2)缓存;3)ClassLoader

     

    6. 内存调优

    调优目的:减少GC的频率尤其是Full GC的次数,过多的GC会占用很多系统资源影响吞吐量。特别要关注Full GC,因为它会对整个堆进行整理。

    主要手段:JVM调优主要通过配置JVM的参数来提高垃圾回收的速度,合理分配堆内存各部分的比例。

    导致Full GC的几种情况和调优策略:

    • 旧生代空间不足
      调优时尽量让对象在新生代GC时被回收、让对象在新生代多存活一段时间和不要创建过大的对象及数组避免直接在旧生代创建对象 
    • 持久代(Pemanet Generation)空间不足
      增大Perm Gen空间,避免太多静态对象 
    • 统计得到的GC后晋升到旧生代的平均大小大于旧生代剩余空间
      控制好新生代和旧生代的比例 
    • System.gc()被显示调用
      垃圾回收不要手动触发,尽量依靠JVM自身的机制 

     

    堆内存比例不良设置会导致什么后果:

    1)新生代设置过小

    一是新生代GC次数非常频繁,增大系统消耗;二是导致大对象直接进入旧生代,占据了旧生代剩余空间,诱发Full GC

    2)新生代设置过大

    一是新生代设置过大会导致旧生代过小(堆总量一定),从而诱发Full GC;二是新生代GC耗时大幅度增加

    一般说来新生代占整个堆1/3比较合适

    3)Survivor设置过小

    导致对象从eden直接到达旧生代,降低了在新生代的存活时间

    4)Survivor设置过大

    导致eden过小,增加了GC频率

    另外,通过-XX:MaxTenuringThreshold=n来控制新生代存活时间,尽量让对象在新生代被回收

     

    JVM提供两种较为简单的GC策略的设置方式:

    1)吞吐量优先

    JVM以吞吐量为指标,自行选择相应的GC策略及控制新生代与旧生代的大小比例,来达到吞吐量指标。这个值可由-XX:GCTimeRatio=n来设置

    2)暂停时间优先

    JVM以暂停时间为指标,自行选择相应的GC策略及控制新生代与旧生代的大小比例,尽量保证每次GC造成的应用停止时间都在指定的数值范围内完成。这个值可由-XX:MaxGCPauseRatio=n来设置

     

    JVM常见配置

    1. 堆设置
      • -Xms:初始堆大小
      • -Xmx:最大堆大小
      • -XX:NewSize=n:设置年轻代大小
      • -XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4
      • -XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5
      • -XX:MaxPermSize=n:设置持久代大小
    2. 收集器设置
      • -XX:+UseSerialGC:设置串行收集器
      • -XX:+UseParallelGC:设置并行收集器
      • -XX:+UseParalledlOldGC:设置并行年老代收集器
      • -XX:+UseConcMarkSweepGC:设置并发收集器
    3. 垃圾回收统计信息
      • -XX:+PrintGC
      • -XX:+PrintGCDetails
      • -XX:+PrintGCTimeStamps
      • -Xloggc:filename
    4. 并行收集器设置
      • -XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数。并行收集线程数。
      • -XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间
      • -XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)
    5. 并发收集器设置
      • -XX:+CMSIncrementalMode:设置为增量模式。适用于单CPU情况。
      • -XX:ParallelGCThreads=n:设置并发收集器年轻代收集方式为并行收集时,使用的CPU数。并行收集线程数。

    转载自https://www.cnblogs.com/IUbanana/p/7067362.html 

    展开全文
  • VMware虚拟机的三种网络模式 VMware虚拟机安装 CentOS安装 CentOS设置 CentOS测试 相关推荐 测试环境 操作系统:Windows 10, 64-bit 虚拟机:VMware® Workstation 14 Pro(版本号:14.0.0 build-6661328) ...

    目录

    目录

    测试环境

    VMware虚拟机的三种网络模式

    VMware虚拟机安装

    CentOS安装

    CentOS设置

    CentOS测试

    相关推荐


    测试环境

    操作系统:Windows 10, 64-bit

    虚拟机:VMware® Workstation 14 Pro(版本号:14.0.0 build-6661328)

    Linux镜像版本:CentOS-7-x86_64-DVD-1804.iso


    VMware虚拟机的三种网络模式

    vmware为我们提供了三种网络工作模式,它们分别是:Bridged(桥接模式)NAT(网络地址转换模式)Host-Only(仅主机模式)

    一、Bridged(桥接模式)

    什么是桥接模式?桥接模式就是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥进行通信。在桥接的作用下,类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机当中,所以所有桥接下的网卡与网卡都是交换模式的,相互可以访问而不干扰。在桥接模式下,虚拟机ip地址需要与主机在同一个网段,如果需要联网,则网关与DNS需要与主机网卡一致。其网络结构如下图所示:

    二、NAT(地址转换模式)

    如果网络ip资源紧缺,但是你又希望你的虚拟机能够联网,这时候NAT模式是最好的选择。NAT模式借助虚拟NAT设备和虚拟DHCP服务器,使得虚拟机可以联网。其网络结构如下图所示:

    在NAT模式中,主机网卡直接与虚拟NAT设备相连,然后虚拟NAT设备与虚拟DHCP服务器一起连接在虚拟交换机VMnet8上,这样就实现了虚拟机联网。那么我们会觉得很奇怪,为什么需要虚拟网卡VMware Network Adapter VMnet8呢?原来我们的VMware Network Adapter VMnet8虚拟网卡主要是为了实现主机与虚拟机之间的通信。

    三、Host-Only(仅主机模式)

    Host-Only模式其实就是NAT模式去除了虚拟NAT设备,然后使用VMware Network Adapter VMnet1虚拟网卡连接VMnet1虚拟交换机来与虚拟机通信的,Host-Only模式将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通讯。其网络结构如下图所示:

    通过上图,我们可以发现,如果要使得虚拟机能联网,我们可以将主机网卡共享给VMware Network Adapter VMnet1网卡,从而达到虚拟机联网的目的。

    上文虚拟机网络说明来自:

    https://note.youdao.com/ynoteshare1/index.html?id=236896997b6ffbaa8e0d92eacd13abbf&type=note

    VMware虚拟机安装

    1、按照软件提示界面安装软件,安装过程就不做说明了;

    附上软件注册机:https://github.com/PengShuaixin/ToolsLibrary/tree/master/Vmware

    2、打开软件----编辑----虚拟网络编辑器

    这里可能无法设置,点一下“更改设置”获取管理员权限即可,如图:

    3、在这里我们将虚拟机路由网关设置成192.168.33.1,按下图设置:

    先将子网IP设置成192.168.33.0,子网掩码:255.255.255.0,然后设置“NAT设置”

    NET设置参数如下:

    4、打开控制面板----网络和 Internet----网络连接,设置VMnet8的IPv4协议;


    CentOS安装

    1、新建一个虚拟机,选择自定义安装,根据提示根据自己的实际情况选择配置;

    这里选择自己镜像文件的路径, 

    根据自己的喜好命名虚拟机、选择虚拟机文件路径,后面两步分配CPU资源和内存资源根据自己电脑实际情况分配,

    注意这里的网络设置要选择NET, IO控制器按照系统推荐的就行,

    我这里磁盘设置如下图:

     

    2、配置完成后启动虚拟机,鼠标点进去按上下键选择,选择Install CentOS 7后回车(Alt+Shift键可以释放鼠标);

    等待一会儿就进入安装界面,为了方便展示设置这里语言设置我就选择简体中文了,

    3、接下来我们对以下三个选项进行设置; 

    软件选择我就选“最小安装”了,有兴趣的可以自己选择安装一个桌面,选择完成后点“完成”

    安装位置没有特殊需求情况下不需要手动设置,点开设置之后直接点完成即可,

    下面是网络设置,在这里也可以先跳过这一步,进入系统之后我们可以直接修改配置文件设置,

    IPv4按如下设置,将该虚拟机设置成静态IP,IP地址为192.168.33.100:

    IPv6设置成忽略,如下图:

    设置完成之后保存设置,保存之后打开右上角网络连接,最后点左上角的完成,

    在这里补充一下安装过程设置主机名的方法: 

    4、设置完成后就可以开始安装了;

    在这儿我们还需要对Root密码进行设置,

    设置完密码后点完成,在输入密码的过程中注意不要使用小键盘,若系统提示密码过于简单,点两次完成即可保存设置的密码,最后就等待进度条完成安装。 

    5、出现如下界面之后我们点击右下角“重启”按钮重启一下系统就完成安装了。


    CentOS设置

    主机名设置:

    编辑hostname文件,这只是其中一种方法,想了解更多方法可以自己百度

    vi /etc/hostname

    按键盘上的字母“i”进入编辑模式,修改主机名:

    修改完成之后按ESC,输入“:wq”保存并退出,然后重启系统,以下两条命令任意一条都可以重启系统:

    reboot
    init 6

    这里再扩展一下关机命令:

    init 0
    shutdown -h now
    halt

    重启完重新登录就完成修改了,如图:

    网络设置:

    在上述安装过程中没有配置网络的可以在此对网络进行设置,这里代码比较长,可以用Xshell连接虚拟主机进行配置,复制粘贴代码比较方便,此处建议在安装过程中就提前设置好网络。

    修改ifcfg-ens33配置文件

    vi /etc/sysconfig/network-scripts/ifcfg-ens33

    配置如下:

    TYPE="Ethernet"
    PROXY_METHOD="none"
    BROWSER_ONLY="no"
    BOOTPROTO="none"
    DEFROUTE="yes"
    IPV4_FAILURE_FATAL="no"
    IPV6INIT="no"
    IPV6_AUTOCONF="yes"
    IPV6_DEFROUTE="yes"
    IPV6_FAILURE_FATAL="no"
    IPV6_ADDR_GEN_MODE="stable-privacy"
    NAME="ens33"
    UUID="fa0d7aef-28a6-41d3-9a20-262748c5d4a5"
    DEVICE="ens33"
    ONBOOT="yes"
    IPADDR="192.168.33.100"
    PREFIX="24"
    GATEWAY="192.168.33.1"
    DNS1="192.168.33.1"
    

    注释:

    IPADDR="192.168.33.100" //IP地址
    PREFIX="24"//子网掩码255.255.255.0,也可以写成:NETMASK="255.255.255.0"
    GATEWAY="192.168.33.1"//网关
    DNS1="192.168.33.1"//DNS服务器,还可以在后面加一个DNS2

    修改完之后保存退出,运行如下命令可让网络配置立即生效:

    service network restart

    还有一个地方的文件也是DNS设置文件,在这里上面已经设置了DNS服务器就不需要修改了,可以查看了解一下

    cat /etc/resolv.conf

     


    CentOS测试

    系统登录:

    输入登录用户名:root,回车,然后输入密码,密码为安装时自己设置的密码。输入密码时不会有任何显示,输入完之后回车即可登录。注意:不要用小键盘输入密码!!

    网络测试:

    查看本机IP

    ip a

    会显示出本机IP信息:

    外网测试(测试过程中按Ctrl+c可以终止正在执行的进程):

    ping www.baidu.com

     测试结果如下就证明可以访问外网:

    [root@master100 network-scripts]# ping www.baidu.com
    PING www.a.shifen.com (220.181.111.188) 56(84) bytes of data.
    64 bytes from 220.181.111.188 (220.181.111.188): icmp_seq=1 ttl=128 time=10.2 ms
    64 bytes from 220.181.111.188 (220.181.111.188): icmp_seq=2 ttl=128 time=3.48 ms
    64 bytes from 220.181.111.188 (220.181.111.188): icmp_seq=3 ttl=128 time=4.93 ms
    64 bytes from 220.181.111.188 (220.181.111.188): icmp_seq=4 ttl=128 time=12.0 ms
    64 bytes from 220.181.111.188 (220.181.111.188): icmp_seq=5 ttl=128 time=3.91 ms
    64 bytes from 220.181.111.188 (220.181.111.188): icmp_seq=6 ttl=128 time=3.86 ms
    64 bytes from 220.181.111.188 (220.181.111.188): icmp_seq=7 ttl=128 time=3.81 ms
    64 bytes from 220.181.111.188 (220.181.111.188): icmp_seq=8 ttl=128 time=10.8 ms
    ^C
    --- www.a.shifen.com ping statistics ---
    8 packets transmitted, 8 received, 0% packet loss, time 7017ms
    rtt min/avg/max/mdev = 3.484/6.642/12.094/3.464 ms

    内网测试:

    ping路由IP地址:

    ping 192.168.33.1
    

    结果如下证明网络配置没有问题: 

    [root@master100 network-scripts]# ping 192.168.33.1
    PING 192.168.33.1 (192.168.33.1) 56(84) bytes of data.
    64 bytes from 192.168.33.1: icmp_seq=1 ttl=128 time=0.260 ms
    64 bytes from 192.168.33.1: icmp_seq=2 ttl=128 time=0.131 ms
    64 bytes from 192.168.33.1: icmp_seq=3 ttl=128 time=0.197 ms
    64 bytes from 192.168.33.1: icmp_seq=4 ttl=128 time=0.115 ms
    64 bytes from 192.168.33.1: icmp_seq=5 ttl=128 time=0.195 ms
    64 bytes from 192.168.33.1: icmp_seq=6 ttl=128 time=0.198 ms
    ^C
    --- 192.168.33.1 ping statistics ---
    6 packets transmitted, 6 received, 0% packet loss, time 5000ms
    rtt min/avg/max/mdev = 0.115/0.182/0.260/0.050 ms
    

    相关推荐

    Linux系统下安装Java环境

    CentOS 7部署Hadoop(单机版)

    CentOS 7部署Hadoop(伪分布式)

    CentOS 7部署Hadoop集群(完全分布式)

    CentOS 7部署Hadoop集群(HA高可用集群)

    展开全文
  • 虚拟机   虚拟机是通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在虚拟机中,你可以安装各种操作系统、组建局域网等,模拟的完全是一个真实系统环境,不会对宿主机造成危害...
  • VMware虚拟机搭建

    2020-07-30 21:17:57
    仅此记录Android转大数据开发的每一步~~ 准备工作: 1、VMware版本: 当时下载的是14.0.0。现在最新的是14.1.1 下载地址:...2、CentOS...
  • 本篇文章基于教程目的,主要描述Linux的发展历程以及Linux虚拟机搭建、运行方式。 正文: 现在越来越多IT行业公司要求熟练使用Linux平台下的编程技术,因为目前大部分主机使用Linux相关系统(Linux称为内核更确切一些...
  • 一、虚拟机的下载 1.进入VMware官网,点击左侧导航栏中的下载,再点击图中标记的Workstation Pro,如下图所示。 2.根据操作系统选择合适的产品,在这里以Windows系统为例,点击转至下载,如下图所示。 3....
  • 现如今Linux也逐渐成为程序员的必备技能,后端、运维、移动开发都会接触到...在安装Linux系统之前,我们得先安装虚拟机软件,虚拟机的好处就是不管你怎么折腾,都不会影响到你的电脑,非常适合初学者,这里就以VMwa...
  • 安装虚拟机2.1 准备镜像2.2 新建虚拟机向导2.3 安装阶段2.4 初始化设置3.虚拟机的网络配置3.1 修改主机名3.2 查看真机的网络设置3.3 配置虚拟机的网络环境 1.安装vmware 1.1下载VMware workstations: 选择15.x版本...
  • 默认情况下,是不支持的,当复制文件后,至另一系统(虚拟机系统或主机系统),粘贴为灰色,不可粘贴。 解决方案:安装VMware Tools: 登录虚拟机; 点击菜单“虚拟机”-“安装VMware Tools"; 自动播放中选择...
  • 我在Windows10系统安装了虚拟机,设置的主机与虚拟机的连接方式是桥接,安装好后,发现虚拟机ping不通主机,但是主机可以ping通虚拟机。 我的操作是:关闭防火墙,发现虚拟机可以ping通主机了。说明是Windows10...
  • VMware虚拟机黑屏解决

    2018-08-21 19:55:33
    相信VM( VMware Workstation)虚拟机很多人都在用,不知道有没有人跟我一样也遇到过VM虚拟机黑屏现象 具体表现为:虚拟机可以正常开机,但是屏幕不显示,处于黑屏状态。 之前有一次好像是因为win10更新,然后更新...
  • VMware 虚拟机开机黑屏

    2019-09-27 12:10:54
    前一段时间电脑上的虚拟机打不开了,点击开机就一直黑屏,挂起时能够看到显示,但是开机就黑屏。 百度了之后找到了解决方案:(我是第一种方案就解决了)(据说可能是wegame的锅。。。) 方法1: 命令行窗口cmd...
  • vmware虚拟机如何设置不当的话会造成运行速度慢,并影响主机运行,甚至会出现死机。 一下是提高vmware虚拟机运行速度的几个技巧, 希望我的博客对您有用。 阿里云最高1888通用代金券,送给你! 文章来自:...
  • 本博客来源于我的个人博客: ...欢迎访问。概要docker是近年来新兴的虚拟化工具,它可以和虚拟机一样实现资源和系统环境的隔离。...docker与虚拟机实现原理比较如下图分别是虚拟机与docker的实现框架。
  • ps:本教程是针对虚拟机NAT模式连接网络一、首先查看自己的虚拟机服务有没有开启,选择电脑里面的服务查看;1.计算机点击右键选择管理 2.进入管理选择VM开头的服务如果没有开启的话就右键开启 二、虚拟机服务开启...
  • 如果你发现在VMware下运行的虚拟机无法连接网络,那下面的方法也许可以帮 到你。(前提是你的物理网络是通的) 第一步:在VMware界面下 单击“编辑“→”虚拟网络编辑器” 第二步:单击”更改设置” 获取权限,...
1 2 3 4 5 ... 20
收藏数 952,634
精华内容 381,053
关键字:

虚拟机