资源预览内容
第1页 / 共23页
第2页 / 共23页
第3页 / 共23页
第4页 / 共23页
第5页 / 共23页
第6页 / 共23页
第7页 / 共23页
第8页 / 共23页
第9页 / 共23页
第10页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Java 虚拟机概述JVM的基本概念 Java相关的概念有很多,以下这些必须了 解: Java JVM Class Heap GC ClasspathJava Java是Sun公司推出的一种编程语言。 符合The Java Virtual Machine Specification Java 是一种面向对象的编程语言,语法规 则和C+类似。 它是一种通过解释方式来执行的语言, Java的代码都编译成class文件,在java虚 拟机中解释执行。Java 版本 J2SE J2EE J2MEJVM JVM-Java虚拟机 JVM是Java虚拟机(Java Virtual Machine)的 缩写。 它是一个虚构出来的计算机,是通过在实际的计 算机上仿真模拟各种计算机功能模拟来实现的 。 Java虚拟机有自己完善的硬件架构,如处理器、 堆栈、寄存器等,还具有相应的指令系统。 单进程多线程 使得JAVA应用可以运行在各种硬件平台JavaJava虚拟机的体系结构方法区堆Java栈PC寄存器 (计数器)本地方 法栈运行时数据区类装载器 子系统Class文件执行引擎本地方法接口本地方 法库唯一线程 独享线程专有的运行数据区线程1线程2线程3PC寄存器栈帧栈帧栈帧栈帧栈帧栈帧栈帧栈帧栈帧线程1线程2线程3Java 栈本地方法栈线程3Class Java class概念 是java应用的最小的单元 是java应用的组成模块 由方法和属性组成 方法定义了该class的行为 属性定义了该class的特点方法区 用于存储被类装载器装载的类型信息 存储的信息 这个类型的全限定名 这个类型的直接朝类的全限定名 这个类型是类型还是接口 这个类型的访问修饰符 任何直接超接口的全限定名的有序列表 常量池 字段信息 除了常量以外的所有类(静态)变量 一个到类ClassLoader的引用 一个到Class的引用 方法表类装载器子系统 Java虚拟机的类装载器类型 启动类装载器 用户自定义类装载器,必须派生自 java.lang.ClassLoader 每个被装载的类型,Java虚拟机都会为她建立 一个java.lang.Class实例来代表类装载器的功能 装载 : 查找并装载类型的二进制代码 连接 : 执行验证,准备以及解析(可选) 验证:确保被倒入类型的正确性 准备:为类变量分配内存,并将其初始化为默 认值 解析:把类型中的符号引用转换为正确的初始 值 初始化 :把类变量初始化为正确的初始值Classpath Classpath 环境变量 Java运行的时候需要的class通过这个环境变量 设置堆(heap) Java程序在运行时创建的所有类实例与数 组都放在同一个堆中,所有线程共享同一 个堆。每个Java程序都运行于一个JVM中 ,因此堆在各个Java程序之间是独立的。 JVM只有分配对象的指令,没有释放对象 的指令。释放工作是由垃圾收集器做的。HEAP的配置 JVM主要调整的参数是heap大小 -Xms -Xmx GC GC垃圾回收 在Java中,当没有对象引用指向原先分配给某 个对象的内存时,该内存便成为垃圾。垃圾回 收意味着程序不再需要的对象是“无用信息“, 这些信息将被丢弃。当一个对象不再被引用的 时候,内存回收它占领的空间,以便空间被后 来的新对象使用。 JVM的一个系统级线 程会自动释放该内存块 ,这就是垃圾回收。堆的设计(1)指向对象池的指针指向类数据的指针句柄池实例数据实例数据实例数据实例数据对象池类数据指向句柄池的指针堆方法区一个对象的引用堆的设计(2)实例数据指向类数据的指针实例数据 实例数据 实例数据堆类数据方法区指向堆的指针一个对象的引用堆中的其他重要数据结构 锁 JVM中每个对象都有一个对象锁,用来协调多个线程 访问同一个对象的同步。某个线程拥有一个对象所后 ,可以继续对这个所追加请求,但是请求几次就必须 释放几次。 只有第一次需要加锁的时候才分配锁数据,但JVM需 要用某种间接方法来联系对象数据与对应的锁数据。 等待集合(wait set) 等待集合用于完成让多个线程完成同一个共同目标而 协调的工作。 只有在实际调用等待或者通知方法的时候才分配等待 集合的数据结构垃圾收集器在堆中的数据结构 需要跟踪程序引用的每个对象 对象调用是否终结Java栈 JVM对栈只有两种操作pop 与 push (单位 是帧) 使用栈帧来存储参数、局部变量、中间运 算结果 Java方法两种方式完成:都释放栈帧 return 异常中止 栈帧数据都是现成私有的JAVA执行 环境变量 JAVA_HOME:java安装目录 PATH:$JAVA_HOME/bin CLASSPATH:类路径 java version java h :显示java help java X :显示非标准参数 “$JAVA_HOME/bin/java“ $JAVA_VM $MEM_ARGS $JAVA_OPTIONS classnameJava主要参数 -cp(classpath):执行类路径 -Xms:heap初始值,如-Xms1024m -Xmx:heap最大值,如-Xms2048m -verbose:gc 打开GC log -Dname=value :指定属性如- Dfile.encoding=GBK
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号