精华内容
下载资源
问答
  • 本人使用的VMware Workstation Pro版本: ... 2、第一步完成后,会弹出“欢迎使用新建虚拟机向导...在这里的Ubuntu64就是64位,而Ubuntu市32位,虽然说现在已有128位,但是这个版本的虚拟机没有对应的虚拟机位数,可以选
  • 只需要在eclipse.ini添加如下一行参数,即添加JDK虚拟机路径:-vmC:\Program Files\Java\jdk1.7.0\jre\bin\javaw需要注意:1.-vm要写在-vmargs参数之前openFile之后,因为在执行-vmargs时候已经采用了默认的JVM,...
    只需要在eclipse.ini添加如下一行参数,即添加JDK虚拟机路径:
    -vm
    C:\Program Files\Java\jdk1.7.0\jre\bin\javaw

    需要注意:
    1.-vm要写在-vmargs参数之前
    openFile之后,因为在执行-vmargs时候已经采用了默认的JVM,如果不放心,可以写在最前面
    2.-vm参数下的路径需要绝对路径,不能用JAVA_HOME相对路径
    展开全文
  • 对象的内存布局对象在内存中存储的布局可以分为三部分:对象头、实例数据、对齐填充。...这部分数据受虚拟机位数的影响,在32位虚拟机中大小是32bit,在64位虚拟机中大小是64bit。 对象头的另一部分是

    对象的内存布局

    对象在内存中存储的布局可以分为三部分:对象头、实例数据、对齐填充。

    • 对象头
      对象头包括两块信息。
      对象头第一部分存储对象自身的运行时数据,如哈希码、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等。这些数据官方称谓为“Mark Word”。这部分数据受虚拟机位数的影响,在32位虚拟机中大小是32bit,在64位虚拟机中大小是64bit。
      对象头的另一部分是类型指针,即对象指向它类元数据的指针。虚拟机通过这个指针来确定这个对象是哪个类的实例。如果对象是一个数组,还需要对象头中有一小块内存用于记录数组长度,因为虚拟机可以通过普通java对象的元数据确定对象的大小,而对于数组,虚拟机无法从数组元数据中确定数组的大小。
    • 实例数据
      实例数据部分是对象真正存储的有效信息,也就是程序代码中所定义的各种类型的字段内容,无论是从父类继承还是子类中定义的都需要记录下来。
      这部分的存储顺序会受到虚拟机分配策略参数和字段在Java源码中定义顺序的影响,相同长度的字段一般会被分到一起。在上述前提下,父类定义的变量一般会出现在子类变量之前。(仅限于部分类型虚拟机的大部分情况)
    • 对齐填充
      对齐填充这部分不是必然存在的,也没有啥意义,它就是起占位符的作用。很多虚拟机要求对象的大小必须是8的倍数,对象头部分是规定的8的倍数,所以当实例数据部分没有对齐时,就需要对齐填充来补齐。

    对象的访问定位

    由于对象的实例存放在堆中,java虚拟机栈中只记录了对象引用(reference),并没有在这个引用中定义如何定义并访问java堆中对象的具体位置,所以对象的访问定位是由java虚拟机决定的,当前常用的两种方式是使用句柄和直接指针两种。

    • 使用句柄
      由于新创建的对象数据分为两部分:对象实例数据和对象类型数据,其中对象实例数据存储在java堆中,对象类型数据存储在方法区,所以在使用句柄的定位方式中,java堆中会分配出一小块儿区域用于存放对象实例数据和对象类型数据的具体存放地址信息,称为句柄池。而java虚拟机栈中的reference就是指向该句柄池。
      图示即为使用句柄的定位方式
      使用句柄的定位方式在java虚拟机栈的reference中存储了稳定的句柄地址,在对象被移动时只需要修改句柄中的地址即可,reference中的数据信息不需要修改。
    • 直接指针
      如果把虚拟机栈中的reference直接指向java堆中的对象实例数据,并在对象实例数据中用一个指针记录方法区中对象类型数据的位置信息,那么就变成了直接指针的方式。
      图示即为直接指针的定位方式
      直接指针的最大优点就是速度快,因为直接指针比使用句柄少了一层指针,节约了一次指针定位的时间。
    展开全文
  • 环境:虚拟机vmware workstation7.1.4 硬件服务器已开启虚拟机虚拟机中系统为solaris10 u8数据库为oracle10gr2[@more@] 第一种方法:通过sqlplus / as ...
    环境:
    虚拟机vmware workstation7.1.4 硬件服务器已开启虚拟机化 虚拟机中系统为solaris10 u8
    数据库为oracle10gr2[@more@]

    第一种方法:
    通过sqlplus / as sysdba登录显示
    mds00afcd01>sqlplus / as sysdba
    SQL*Plus: Release 10.2.0.4.0 - Production on Mon Aug 6 15:31:53 2012
    Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

    Connected to:
    Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    SQL>

    第二种方法:
    mds00afcd01>cd $ORACLE_HOME/bin
    mds00afcd01>file oracle
    oracle: ELF 64-bit LSB executable AMD64 Version 1, dynamically linked, not stripped

    第三种方法:
    SQL> select address from v$sql where rownum<2;
    ADDRESS
    ----------------
    00000003928F8F30
    SQL>

    第四种方法:

    SQL> select * from v$version;
    BANNER
    ----------------------------------------------------------------
    Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Prod
    PL/SQL Release 10.2.0.4.0 - Production
    CORE 10.2.0.4.0 Production
    TNS for Solaris: Version 10.2.0.4.0 - Production
    NLSRTL Version 10.2.0.4.0 - Production
    SQL>


    solaris系统已经是64bit环境了,这个我已经确定过了。

    第一种和第四种方法显示数据库为32bit,而第二种和第三种显示数据库为64bit
    请大家帮忙给出一个能准确确定数据库位数的方案。

    自己刚才装了一个32bit ora10的数据库
    未命名.jpg
    其结果是8位16进制 ,这说明我上面的数据库是64位的,可是为什么通过sqlplus / as sysdba 看不到64bit提示信息呢?

    check database bit.docx

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15483376/viewspace-1059100/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/15483376/viewspace-1059100/

    展开全文
  • java虚拟机

    2019-12-13 17:26:04
    目录(java虚拟机) 一、虚拟机 ​ 同样的java代码在不同平台生成的机器码肯定是...不知道同学们还记不记得,在下载jdk的时候,我们在oracle官网,基于不同的操作系统或者位数版本要下载不同的jdk版本,也就是说...

    目录(java虚拟机)


    一、虚拟机

    同样的java代码在不同平台生成的机器码肯定是不一样的,因为不同的操作系统底层的硬件指令集是不同的。

    同一个java代码在windows上生成的机器码可能是0101…,在linux上生成的可能是1100…,那么这是怎么实现的呢?

    不知道同学们还记不记得,在下载jdk的时候,我们在oracle官网,基于不同的操作系统或者位数版本要下载不同的jdk版本,也就是说针对不同的操作系统,jdk虚拟机有不同的实现。

    那么虚拟机又是什么东西呢,如图是从软件层面屏蔽不同操作系统在底层硬件与指令上的区别,也就是跨平台的由来。

    说到这里同学们可能还是有点不太明白,说的还是太宏观了,那我们来了解下java虚拟机的组成。

    二、虚拟机组成

    1.栈

    我们先讲一下其中的一块内存区域栈,大家都知道栈是存储局部变量的,也是线程独有的区域,也就是每一个线程都会有自己独立的栈区域。

    public class Math {
    public static int initData = 666;
    public static User user = new User();

    public int compute() {
        int a = 1;
        int b = 2;
        int c = (a+b) * 10;
        return c;
    }
    
    public static void main(String[] args) {
        Math math = new Math();
        math.compute();
        System.out.println("test");
    }
    

    }
    说起栈大家都不会陌生,数据结构中就有学,这里线程栈中存储数据的部分使用的就是栈,先进后出。

    大家都知道每个方法都有自己的局部变量,比如上图中main方法中的math,compute方法中的a b c,那么java虚拟机为了区分不同方法中局部变量作用域范围的内存区域,每个方法在运行的时候都会分配一块独立的栈帧内存区域,我们试着按上图中的程序来简单画一下代码执行的内存活动。

    执行main方法中的第一行代码是,栈中会分配main()方法的栈帧,并存储math局部变量,,接着执行compute()方法,那么栈又会分配compute()的栈帧区域。

    这里的栈存储数据的方式和数据结构中学习的栈是一样的,先进后出。当compute()方法执行完之后,就会出栈被释放,也就符合先进后出的特点,后调用的方法先出栈。

    栈帧

    那么栈帧内部其实不只是存放局部变量的,它还有一些别的东西,主要由四个部分组成。

    那么要讲这个就会涉及到更底层的原理–字节码。我们先看下我们上面代码的字节码文件。

    看着就是一个16字节的文件,看着像乱码,其实每个都是有对应的含义的,oracle官方是有专门的jvm字节码指令手册来查询每组指令对应的含义的。那我们研究的,当然不是这个。

    jdk有自带一个javap的命令,可以将上述class文件生成一种更可读的字节码文件。

    我们使用javap -c命令将class文件反编译并输出到TXT文件中。

    Compiled from “Math.java”
    public class com.example.demo.test1.Math {
    public static int initData;

    public static com.example.demo.bean.User user;

    public com.example.demo.test1.Math();
    Code:
    0: aload_0
    1: invokespecial #1 // Method java/lang/Object.""😦)V
    4: return

    public int compute();
    Code:
    0: iconst_1
    1: istore_1
    2: iconst_2
    3: istore_2
    4: iload_1
    5: iload_2
    6: iadd
    7: bipush 10
    9: imul
    10: istore_3
    11: iload_3
    12: ireturn

    public static void main(java.lang.String[]);
    Code:
    0: new #2 // class com/example/demo/test1/Math
    3: dup
    4: invokespecial #3 // Method “”😦)V
    7: astore_1
    8: aload_1
    9: invokevirtual #4 // Method compute:()I
    12: pop
    13: getstatic #5 // Field java/lang/System.out:Ljava/io/PrintStream;
    16: ldc #6 // String test
    18: invokevirtual #7 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
    21: return

    static {};
    Code:
    0: sipush 666
    3: putstatic #8 // Field initData:I
    6: new #9 // class com/example/demo/bean/User
    9: dup
    10: invokespecial #10 // Method com/example/demo/bean/User.""😦)V
    13: putstatic #11 // Field user:Lcom/example/demo/bean/User;
    16: return
    }
    此时的jvm指令码就清晰很多了,大体结构是可以看懂的,类、静态变量、构造方法、compute()方法、main()方法。

    其中方法中的指令还是有点懵,我们举compute()方法来看一下:

    Code:
    0: iconst_1
    1: istore_1
    2: iconst_2
    3: istore_2
    4: iload_1
    5: iload_2
    6: iadd
    7: bipush 10
    9: imul
    10: istore_3
    11: iload_3
    12: ireturn
    这几行代码就是对应的我们代码中compute()方法中的四行代码。大家都知道越底层的代码,代码实现的行数越多,因为他会包含一些java代码在运行时底层隐藏的一些细节原理。

    那么一样的,这个jvm指令官方也是有手册可以查阅的,网上也有很多翻译版本,大家如果想了解可自行百度。

    这里我只讲解本博文设计代码中的部分指令含义:

    1. 将int类型常量1压入操作数栈

    0: iconst_1
    这一步很简单,就是将1压入操作数栈

    1. 将int类型值存入局部变量1

    1: istore_1
    局部变量1,在我们代码中也就是第一个局部变量a,先给a在局部变量表中分配内存,然后将int类型的值,也就是目前唯一的一个1存入局部变量a

    1. 将int类型常量2压入操作数栈

    2: iconst_2
    3. 将int类型值存入局部变量2

    3: istore_2
    这两行代码就和前两行类似了。

    1. 从局部变量1中装载int类型值

    4: iload_1
    5. 从局部变量2中装载int类型值

    5: iload_2
    这两个代码是将局部变量1和2,也就是a和b的值装载到操作数栈中

    1. 执行int类型的加法

    6: iadd
    iadd指令一执行,会将操作数栈中的1和2依次从栈底弹出并相加,然后把运算结果3在压入操作数栈底。

    1. 将一个8位带符号整数压入栈

    7: bipush 10
    这个指令就是将10压入栈

    1. 执行int类型的乘法

    9: imul
    这里就类似上面的加法了,将3和10弹出栈,把结果30压入栈

    1. 将将int类型值存入局部变量3

    10: istore_3
    这里大家就不陌生了吧,和第二步第三步是一样的,将30存入局部变量3,也就是c

    1. 从局部变量3中装载int类型值

    11: iload_3
    这个前面也说了

    1. 返回int类型值

    12: ireturn
    这个就不用多说了,就是将操作数栈中的30返回

    到这里就把我们compute()方法讲解完了,讲完有没有对局部变量表和操作数栈的理解有所加深呢?说白了赋值号=后面的就是操作数,在这些操作数进行赋值,运算的时候需要内存存放,那就是存放在操作数栈中,作为临时存放操作数的一小块内存区域。

    接下来我们再说说方法出口。

    方法出口说白了不就是方法执行完了之后要出到哪里,那么我们知道上面compute()方法执行完之后应该回到main()方法第三行那么当main()方法调用compute()的时候,compute()栈帧中的方法出口就存储了当前要回到的位置,那么当compute()方法执行完之后,会根据方法出口中存储的相关信息回到main()方法的相应位置。

    那么main()方同样有自己的栈帧,在这里有些不同的地方我们讲一下。

    我们上面已经知道局部变量会存放在栈帧中的局部变量表中,那么main()方法中的math会存入其中,但是这里的math是一个对象,我们知道new出来的对象是存放在堆中的

    那么这个math变量和堆中的对象有什么联系呢?是同一个概念么?

    当然不是的,局部变量表中的math存储的是堆中那个math对象在堆中的内存地址

    2.程序计数器

    程序计数器也是线程私有的区域,每个线程都会分配程序计数器的内存,是用来存放当前线程正在运行或者即将要运行的jvm指令码对应的地址,或者说行号位置。

    上述代码中每个指令码前面都有一个行号,你就可以把它看作当前线程执行到某一行代码位置的一个标识,这个值就是程序计数器的值。

    那么jvm虚拟机为什么要设置程序计数器这个结构呢?就是为了多线程的出现,多线程之间的切换,当一个程序被挂起的时候,总是要恢复的,那么恢复到哪个位置呢,总不能又重新开始执行吧,那么程序计数器就解决了这个问题。

    3.方法区

    在jdk1.8之前,有一个名称叫做持久带/永久代,很多同学应该听过,在jdk1.8之后,oracle官方改名为元空间。存放常量、静态变量、类元信息。

    public static int initData = 666;
    这个initData就是静态变量,毋庸置疑是存放在方法区的

    public static User user = new User();
    那么这个user就有点不一样了,user变量放在方法区,new的User是存放在堆中的

    到这里我们就能意识到栈,堆,方法区之间都是有联系的。

    栈中的局部变量,方法区中的静态变量,如果是对象类型的话都会指向堆中new出来中的对象,那么红色的联系代表什么呢?我们先来了解一下对象。

    对象组成

    你对对象的了解有多少呢,天天用对象,你是否知道对象在虚拟机中的存储结构呢?

    对象在内存中存储的布局可以分为3块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。下图是普通对象实例与数组对象实例的数据结构:

    对象头

    HotSpot虚拟机的对象头包括两部分信息:

    Mark Word
    第一部分markword,用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等,这部分数据的长度在32位和64位的虚拟机(未开启压缩指针)中分别为32bit和64bit,官方称它为“MarkWord”。

    Klass Pointer
    对象头的另外一部分是klass类型指针,即对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例.

    数组长度(只有数组对象有)
    如果对象是一个数组, 那在对象头中还必须有一块数据用于记录数组长度.

    实例数据

        实例数据部分是对象真正存储的有效信息,也是在程序代码中所定义的各种类型的字段内容。无论是从父类继承下来的,还是在子类中定义的,都需要记录起来。
    

    对齐填充

        第三部分对齐填充并不是必然存在的,也没有特别的含义,它仅仅起着占位符的作用。由于HotSpot VM的自动内存管理系统要求对象起始地址必须是8字节的整数倍,换句话说,就是对象的大小必须是8字节的整数倍。而对象头部分正好是8字节的倍数(1倍或者2倍),因此,当对象实例数据部分没有对齐时,就需要通过对齐填充来补全。
    

    其中的klass类型指针就是那条红色的联系,那是怎么联系的呢?

    new Thread().start();

    类加载其实最终是以类元信息的形式存储在方法区中的,math和math2都是由同一个类new出来的,当对象被new时,都会在对象头中存储一个指向类元信息的指针,这就是Klass Pointer.

    到这里我们就讲解了栈,程序计数器和方法区,下面我们简单介绍一下本地方法区,最后再终点讲解堆。

    4.本地方法栈

    实际上现在本地方法栈已经用的比较少了,大家应该都有听过本地方法吧

    如何经常用的线程类

    new Thread().start();
    public synchronized void start() {
    if (threadStatus != 0)
    throw new IllegalThreadStateException();
    group.add(this);
    boolean started = false;
    try {
    start0();
    started = true;
    } finally {
    try {
    if (!started) {
    group.threadStartFailed(this);
    }
    } catch (Throwable ignore) {
    }
    }
    }
    其中底层调用了一个start0()的方法

    private native void start0();
    这个方法没有实现,但又不是接口,是使用native修饰的,是属于本地方法,底层通过C语言实现的,那java代码里为什么会有C语言实现的本地方法呢?

    大家都知道JAVA是问世的,在那之前一个公司的系统百分之九十九都是使用C语言实现的,但是java出现后,很多项目都要转为java开发,那么新系统和旧系统就免不了要有交互,那么就需要本地方法来实现了,底层是调用C语言中的dll库文件,就类似于java中的jar包,当然,如今跨语言的交互方式就很多了,比如thrift,http接口方式,webservice等,当时并没有这些方式,就只能通过本地方法来实现了。

    那么本地方法始终也是方法,每个线程在运行的时候,如果有运行到本地方法,那么必然也要产生局部变量等,那么就需要存储在本地方法栈了。如果没有本地方法,也就没有本地方法栈了。

    5.堆

    最后我们讲堆,堆是最重要的一块内存区域,我相信大部分人对堆都不陌生。但是对于它的内部结构,运作细节想要搞清楚也没那么简单。

    对于这个基本组成大家应该都有所了解,对就是由年轻代和老年代组成,年轻代又分为伊甸园区和survivor区,survivor区中又有from区和to区.

    我们new出来的对象大家都知道是放在堆中,那具体放在堆中的哪个位置呢?

    其实new出来的对象一般都放在Eden区,那么为什么叫伊甸园区呢,伊甸园就是亚当夏娃住的地方,不就是造人的地方么?所以我们new出来的对象就是放在这里的,那当Eden区满了之后呢?

    假设我们给对分配600M内存,这个是可以通过参数调节的,我们后文再讲。那么老年代默认是占2/3的,也就是差不多400M,那年轻代就是200M,Eden区160M,Survivor区40M。

    GC

    一个程序只要在运行,那么就不会不停的new对象,那么总有一刻Eden区会放满,那么一旦Eden区被放满之后,虚拟机会干什么呢?没错,就是gc,不过这里的gc属于minor gc,就是垃圾收集,来收集垃圾对象并清理的,那么什么是垃圾对象呢?

    好比我们上面说的math对象,我们假设我们是一个web应用程序,main线程执行完之后程序不会结束,但是main方法结束了,那么main()方法栈帧会被释放,局部变量会被释放,但是局部变量对应的堆中的对象还是依然存在的,但是又没有指针指向它,那么它就是一个垃圾对象,那就应该被回收掉了,之后如果还会new Math对象,也不会用这个之前的了,因为已经无法找到它了,如果留着这个对象只会占用内存,显然是不合适的。

    这里就涉及到了一个GC Root根以及可达性分析算法的概念,也是面试偶尔会被问到的。

    可达性分析算法是将GC Roots对象作为起点,从这些起点开始向下搜索引用的对象,找到的对象都标记为非垃圾对象,其余未标记的都是垃圾对象。

    那么GC Roots根对象又是什么呢,可以作为根节点的有线程栈的本地变量,静态变量,本地方法栈的变量等等,说白了就是找到和根节点有联系的对象,也就是有用的,其余都认为是垃圾对象来回收。

    经历了第一次minor gc后,没有被清理的对象就会被移到From区,如上图。

    上面在说对象组成的时候有写到,在对象头的Mark Word中有存储GC分代年龄,一个对象每经历一次gc,那么它的gc分代年龄就会+1,如上图。

    那么如果第二次新的对象又把Eden区放满了,那么又会执行minor gc,但是这次会连着From区一起gc,然后将Eden区和From区存活的对象都移到To区域,对象头中分代年龄都+1,如上图。

    那么当第三次Eden区又满的时候,minor gc就是回收Eden区和To区域了,TEden区和To区域还活着的对象就会都移到From区,如上图。说白了就是Survivor区中总有一块区域是空着的,存活的对象存放是在From区和To区轮流存放,也就是互相复制拷贝,这也就是垃圾回收算法中的复制-回收算法。

    如果一个对象经历了一个限值15次gc的时候,就会移至老年代。那如果还没有到限值,From区或者To区域也放不下了,就会直接挪到老年代,这只是举例了两种常规规则,还有其他规则也是会把对象存放至老年代的。

    那么随着应用程序的不断运行,老年代最终也是会满的,那么此时也会gc,此时的gc就是Full gc了。

    GC案例

    下面我们通过一个简单的演示案例来更加清楚的了解GC。

    public class HeapTest {
    byte[] a = new byte[1024*100];
    public static void main(String[] args) throws InterruptedException {
    ArrayList heapTest = new ArrayList<>();
    while(true) {
    heapTest.add(new HeapTest());
    Thread.sleep(10);
    }
    }
    }
    这块代码很明显,就是一个死循环,不断的往list中添加new出来的对象。

    我们这里使用jdk自带的一个jvm调优工具jvisualvm来观察一下这个代码执行的的内存结构。

    运行代码打开之后我们可以看到这样的界面:

    我们在左边的应用程序中可以看到我们运行的这个代码,右边是它的一些jvm,内存信息,我们这里不关注,我们需要用到的是最后一个Visual GC面板,这是一个插件,如果你的打开没有这一栏的话,可以再工具栏的插件中进行下载安装。

    打开visual GC,我们先看一下界面大概的布局,

    其中老年代(Olc),伊甸园区(Eden),S0(From),S1(To)几个区域的内存和动态分配图都是清晰可见,以一对应的。

    我们选择中间一张图给大家对应一下上面所讲的内容:

    1:对象放入Eden区

    2:Eden区满发生minor gc

    3:第二步的存活对象移至From(Survivor 0)区

    4:Eden区再满发生minor gc

    5:第四步存活的对象移至To(Survivor 1)区

    这里可以注意到From和To区域和我们上面所说移至,总有一个是空的。

    大家还可以注意到老年代这里,都是一段一段的直线,中间是突然的增加,这就是在minor gc中一批一批符合规则的对象被批量移入老年代。

    那当我们老年代满了会发生什么呢?当然是我们上面说过的Full GC,但是你仔细看我们写的这个程序,我们所有new出来的HeapTest对象都是存放在heapLists中的,那就会被这个局部变量所引用,那么Full GC就不会有什么垃圾对象可以回收,可是内存又满了,那怎么办?

    展开全文
  • 虚拟机知识整理

    2020-03-24 17:58:45
    渗透测试武器之一:虚拟机 现在习惯上将渗透测试所用的系统安装在虚拟机中,目前被运用最多,也是最好用...并下一步,选择Linux,在下面的下拉框里选择Debian(后缀有x64是64位系统,根据自己的镜像文件的系统位数选...
  • jvm之判断版本和位数

    2015-11-19 15:07:00
    1.判断虚拟机位数和版本 //32位 java -version java version "1.7.0_79" Java(TM) SE Runtime Environment (build 1.7.0_79-b15) Java HotSpot(TM) Server VM (build 24.79-b02, mixed mode) #64 位 ...
  • 去下载 软件下载网站解压之后,选择自己需要的位数选择之后,双击fxp,选择快速连接输入刚刚设置虚拟机时候设置的ip地址,再输入登录名还有密码就可以进行连接这里需要打开虚拟机,不能出于关机状态创建连接之后左边为本...
  • linux虚拟机安装

    2020-12-20 15:51:05
    linux虚拟机安装 首先说明的是用 virtualbox + vageant安装centos7 1 前期准备 1 在官网下载对应版本的virtualbox ,我这里是Windows版,所以选择Windows,然后下一步下载无脑安装即可。 virtualbox 官网直达 2 ...
  • 什么是java虚拟机

    2018-09-15 15:50:33
    不同的操作系统之间,相同的操作系统不同位数,都有着不同的指令集,例如windows和linux,64位和32位。对于不夸平台的开发语言来说,在windows开发的一套系统,放在linux上跑会出问题,因此需要为不同的操作系统开发...
  • 3.在客户机操作系统中选择Linux,在版本中选择Debian系统(可以选择最新的版本以及相应系统位数,此处可以选择64位) 4.重命名虚拟机名称,点击浏览选择虚拟机保存的位置(此项可以在虚拟机任务栏编辑中的首选项...
  • java虚拟机内存模型

    2020-02-02 13:19:23
    一、虚拟机 同样的java代码在不同平台生成的机器码肯定是不一样的,因为不同的操作系统底层的硬件指令集是不同的。 同一个java代码在windows上生成的机器码可能是0101…,在linux上生成的可能是1100…,那么这是...
  • 虚拟机安装Centos7

    千次阅读 2015-08-30 11:24:13
    为了避免简易安装,这里选择的稍后安装操作系统选择的是redhat的,命名当然随意,但还是有规则比较好,我的规则是发行版版本号-位数-ip地址,我准备分配90的ip 文件放在J盘我习惯给虚拟机分配60G,因为是动态分配的...
  • VM虚拟机网卡LAN区段模拟内网 准备 服务器 ...一般这么写:区段名称(区段IP地址/子网掩码位数),方便用户知道自己这台虚拟机分配的什么内网 私有地址空间 10.0.0.0/18 10.0...
  • 这里选择 linux ,下面系统选择 CentOS6 64位(这里是根据自己所下载的系统的位数和系统的版本来决定) 选择虚拟机创建后的保存位置,可以设置为默认(建议更改到其他盘,路径尽量不要有中文)。 这里的 CPU ...
  • Java虚拟机内存模型简单介绍

    热门讨论 2021-03-03 15:07:38
    不知道同学们还记不记得,在下载jdk的时候,我们在oracle官网,基于不同的操作系统或者位数版本要下载不同的jdk版本,也就是说针对不同的操作系统,jdk虚拟机有不同的实现。 那么虚拟机又是什么东西呢,如图是从...
  • 最近由于要进行微信小程序的开发。...需要在虚拟机里的我的电脑里有一个CD驱动,进到里面根据自己电脑的位数安装相应的virtaul add就ok了!然后重启,点击全屏模式,发现自己的电脑秒变win10 了! ...
  • 使用hydra爆破win7虚拟机的远程桌面,并使用xrdp连接win7虚拟机的远程桌面。 操作过程: 查询kali的ip,获取当前局域网网段,获取当前内网的网络号和子网号 nmap -sP 192.168.70.0进行扫描,可得需要爆破的ip ...
  • 如果说,操作系统坏了,或者想换一个不同位数的操作系统,其实是不用动虚拟机的,除非虚拟机位数不匹配你想要换的操作系统,那么就得一起换,否则,只需要创建新的虚拟机,把新的操作系统镜像文件加入,就可以了。...
  • 一、虚拟机 同样的java代码在不同平台生成的机器码肯定是不一样的,因为不同的操作系统底层的硬件指令集是不同的。 同一个java代码在windows上生成的机器码可能是0101.......,在linux上生成的可能是1100.........
  • 虚拟机环境搭建之Window server 2019

    千次阅读 2020-05-19 15:51:17
    虚拟机环境搭建之Window server 2019 打开我们的虚拟机,开始着手准备安装一个虚拟实验环境,今天我使用...(其他版本可根据自身系统镜像和位数自行选择即可) 自定义名称及位置,然后继续下一步 引导类型,默认即可
  • 虚拟机中安装 jdk1.8 和Tomcat

    千次阅读 2018-11-02 17:17:32
    选择自己需要的位数 选择之后,双击fxp, 选择快速连接 输入刚刚设置虚拟机时候设置的ip地址,再输入登录名还有密码 就可以进行连接 这里需要打开虚拟机,不能出于关机状态 创建连接之后 左边为本机,右边为虚拟机 在...
  • 栈帧(Stack Frame)是虚拟机中用于实现方法调用和方法执行的数据结构,是虚拟机栈中的基本数据元素。 一个栈帧中主要包含以下内容: 局部变量表 局部变量表用于存储方法的形参以及方法内部定义的局部变量,在...
  • 虚拟机中的问题及解决方法

    千次阅读 2015-09-16 10:41:37
    tips:1、无论使用系统是多少位,都可以在虚拟机里安装任意位数系统。 2、虚拟机支持:Windows、Linux、Chrome OS、Mac OS、Android OS等。 3、虚拟机(Virtual Machine),在计算机科学中的体系结构裏,是指一种...
  • 第一种确定Java虚拟机JVM是64位JVM还是32位的方法Sun有一个Java系统属性来确定JVM的位数:32或64:sun.arch.data.model=32 // 32 bit JVMsun.arch.data.model=64 // 64 bit JVM您可以使用System.getProperty("sun....
  • 第一种确定Java虚拟机JVM是64位JVM还是32位的方法Sun有一个Java系统属性来确定JVM的位数:32或64:sun.arch.data.model=32 // 32 bit JVMsun.arch.data.model=64 // 64 bit JVM您可以使用System.getProperty("sun....
  • Linux虚拟机安装Jenkins并实现部署

    千次阅读 热门讨论 2019-07-30 16:04:47
    1.准备 命令:ifconfig -a 查看...命令:arch 核查Linux系统的位数,根据位数下载对应的JDK以及Tomact等等 2.下载对应版本的JDK,Tomcat,Jenkins Jenkins下载命令 war : wgethttp://mirrors.jenkins.io/war/...
  • windows 下面安装虚拟机

    千次阅读 2016-11-28 16:20:47
    查看本机 是 32位还是 64 位,然后下载对应位数的 VMware 就可以了。 安装完后需要重启电脑。

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 373
精华内容 149
关键字:

虚拟机位数