前言: 1、什么是JVM JVM的全称是 Java Virtual Machine(Java虚拟机),它通过模拟一个计算机来达到一个计算机所具有的功能。 Java和实体计算机一样也必须有一套合适的指令集,这个指令集能够被JVM解析执行,这个指令集我们称为JVM字节码指令集,符合class文件规范的字 ...
分类:
其他好文 时间:
2019-04-02 23:55:50
阅读次数:
302
Spark 2.x管理与开发 第一篇:Scala编程语言 一、Scala语言基础 1、Scala语言简介 Scala是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚拟机),并兼容现有的Java程序。它也能运行于CLDC配置的Ja ...
分类:
其他好文 时间:
2019-04-02 14:11:55
阅读次数:
190
Thread类 Thread是程序中的执行线程。Java 虚拟机允许应用程序并发地运行多个执行线程。 创建新执行线程的两种方法: 一种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的 run 方法。创建对象,开启线程。run方法相当于其他线程的main方法。 另一种方法是声明 ...
分类:
其他好文 时间:
2019-03-31 19:38:58
阅读次数:
185
什么是“JVM”的无关性 Java具有平台无关性,也就是任何操作系统都能够运行Java代码,之所以能够实现这一点,是因为Java运行在虚拟机上,不同的操作系统都有各自的Java虚拟机,从而实现一次编译,到处运行。 JVM不仅具有平台无关性,还具有语言无关性。平台无关性是指不同的操作系统都有各自的JV ...
分类:
其他好文 时间:
2019-03-31 18:04:37
阅读次数:
138
1.垃圾收集器 1.1 Serial收集器 这个收集器是一个单线程的收集器,它在进行垃圾收集时,必须暂停其他所有的工作线程。 它是虚拟机运行在Client模式下的默认新生代收集器,它简单而高效。 1.2 ParNew收集器 其实就是Serial收集器的多线程版本,目前只有它能与CMS收集器配合工作。 ...
分类:
编程语言 时间:
2019-03-29 17:28:24
阅读次数:
160
代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步。 7.1 概述 上一章我们了解了Class文件存储格式的具体细节,在Class文件中描述的各种信息,最终都需要加载到虚拟机中之后才能运行和使用。而虚拟机如何加载这些Class文件?Class文件中的信息进入到虚 ...
分类:
编程语言 时间:
2019-03-29 16:10:52
阅读次数:
179
由于在Hotspot虚拟机中中不区分虚拟机栈和本地方法栈,因此通过-Xoss修改参数是无效的,可以通过修改-Xss设定。 如果线程请求的栈深度大于虚拟机允许的最大深度,将抛出StackOverflowError异常。 如果虚拟机在扩展栈时无法申请到足够的内存空间,将抛出OutOfMemoryErro ...
分类:
编程语言 时间:
2019-03-29 01:18:04
阅读次数:
190
Java虚拟机在执行Java程序的过程中会把它管理的内存划分为若干个不同的数据区域。 这些区域各有个的用途、以及创建和销毁时间,有的随虚拟机进程的启动而存在,有的则依赖于用户线程的启动和结束而建立和销毁。 Java虚拟机主要分为5部分:方法区、虚拟机栈、本地方法栈、堆、程序计数器。 程序计数器:是一 ...
分类:
编程语言 时间:
2019-03-28 00:48:52
阅读次数:
188
查看方法java -XX:+PrintCommandLineFlags -version 引用《深入理解Java虚拟机:JVM高级特性与最佳实践》的介绍: 所以,jdk8环境下,默认使用 Parallel Scavenge(新生代)+ Serial Old(老年代) -XX:+PrintComman ...
分类:
其他好文 时间:
2019-03-25 14:50:12
阅读次数:
260
jvm规范:定义了 Class文件类型 运行时数据 帧栈 虚拟机的启动 虚拟机的指令集 vm指令集:类型转换,出栈入栈操作,运算,流程控制,函数调用。 jvm需要对java Library提供以下支持: --反射java.lang.reflect --ClassLoader --初始化class和i ...
分类:
编程语言 时间:
2019-03-24 09:51:57
阅读次数:
180