![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 90
sinat_37138973
这个作者很懒,什么都没留下…
展开
-
Java简介(一)
Java技术体系Java技术体系包括如下组成部分:Java程序设计语言 各种应用平台上的Java虚拟机 Class文件格式 Java API类库来自商业机构和开源社区的第三方Java类库 我们把Java程序语言、Java虚拟机、Java API类库三部分统称为JDK(Java Development Kit),JDK是用于支撑Java程序开发的最小环境。另外可以把Java API类库中转载 2016-12-22 18:15:34 · 268 阅读 · 0 评论 -
虚拟机字节码执行引擎(八)
代码编译的结果是从本地机器码转变为字节码,是存储格式发展的一小步,确实编程语言发展的一大步。8.1 概述执行引擎是Java虚拟机最核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、硬件、指令集和操作系统层面上,而虚拟机的执行引擎则是由自己实现的,因此可以自行制定指令集与执行引擎的结构体系,并且能够执行那些不被硬件直接支转载 2017-01-20 17:39:08 · 466 阅读 · 0 评论 -
虚拟机类加载机制(七)
7.1 概述代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是变成语言发展的一大步。在Class文件中描述的各种信息,最终都需要加载到虚拟机中之后才能被运行和使用。虚拟机把描述类的数据从Class文件加载到内存,并对数据继续进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。与那些在编译期需要进行连接工作的语言不同,在Java语言里面,转载 2017-01-17 17:02:56 · 406 阅读 · 0 评论 -
Java故障的处理
常见的Java故障和需要收集的数据之间的概要关系:JVM级别数据对于JVM,下面这些选项最好常年打开选项,对于收集故障数据很有帮助。-XX:+PrintGCDetails-XX:+PrintGCDateStamps-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/log/gcdump简单的做法可以在Java进程非正常返回的时候执行一个脚本,自动的去采转载 2017-04-25 11:39:17 · 372 阅读 · 0 评论 -
Java内存模型(十二)
12.1 硬件的效率与一致性计算机的存储设备与处理器的运算速度之间有着几个数量级的差距,所以现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的告诉缓存(Cache)来作为内存与处理器之间的缓冲:将运算需要使用到的数据复制到缓存中,让运算能快速进行,当运算结束后再从缓存同步回内存之中,这样处理器就无需等到缓慢的内存读写了。基于高速缓存的存储交互很好的解决了处理器与内存的速度矛盾,但是也引转载 2017-01-28 15:40:24 · 470 阅读 · 0 评论 -
Java内存区域与内存溢出异常(二)
2.1 运行时数据区域Java虚拟机在执行Java程序过程中会把它所管理的内存划分为若干个不同数据区域。2.1.1 程序计数器程序计数器(Program Counter Register)是一块小的内存空间,作用可以看做是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器转载 2016-12-23 15:24:42 · 570 阅读 · 0 评论 -
Java各种数据在内存中的存储(九)
Java的内存管理实际上就是变量和对象的管理,其中包括对象的分配和释放。基本数据类型Java的基本数据类型共有8种,即int, short, long, byte, float, double, boolean, char(注意,并没有string的基本类型)。 这种类型的定义是通过诸如int a = 3; long b = 255L;的形式来定义的,称为自动变量。 如int a = 3;这里的转载 2017-02-02 15:38:16 · 5393 阅读 · 3 评论 -
类文件结构(六)
6.1 无关性的基石计算机只认识0和1,所以我们写的程序需要被编译器翻译成由0和1构成的二级制格式才能被计算机执行。今天的计算机仍然只能识别0和1,但是由于近些年内虚拟机及建立在虚拟机之上的大量程序语言的出现,将我们编写的程序编译成二进制本地机器码(Native Code)已不再是唯一选择,越来越多的程序语言选择了与操作系统和机器指令集无关的、平台中立的格式作为系统编译后的存储格式。Sun公司及其他转载 2017-01-12 15:16:03 · 631 阅读 · 0 评论 -
调优案例分析与实战(五)
5.1 案例分析5.1.1 高性能硬件上的程序部署策略在高性能硬件上部署程序,目前主要有两种方式: - 通过64位JDK来使用大内存。 - 使用若干个32位虚拟机建立逻辑集群来利用硬件资源。对于用户交互性强、对停顿时间敏感的系统,可以给Java虚拟机分配超大堆的前提是有把握把应用程序的Full GC频率控制得足够低,至少要低到不会影响用户使用,譬如十几个小时乃至一天才出现一次转载 2017-01-09 14:05:46 · 321 阅读 · 0 评论 -
Java线程(十)
10.1 Java与线程10.1.1 线程的实现线程的引入,可以把一个进程的资源分配和执行调度分开,各个线程既可以共享进程资源(内存地址、文件I/O等),又可以独立调度(线程是CPU调度的最基本单位)。Java语言提供了在不同硬件和操作系统平台下对线程操作的统一处理,每个java.lang.Thread类的实例就代表了一个线程。不过Thread类所有关键方法都被声明为Native。在Java API转载 2017-02-06 16:29:38 · 311 阅读 · 0 评论 -
线程安全与锁优化(十三)
等待转载 2017-01-29 11:50:27 · 468 阅读 · 0 评论 -
虚拟机性能监控与故障处理工具(四)
JVM转载 2017-01-06 11:05:11 · 394 阅读 · 0 评论 -
垃圾收集器与内存分配策略(三)
了解GC(Garbage Collection)的目的:当需要排查各种内存溢出、内存泄露问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,就需要对这些“自动化”的技术实施必要的监控和调节。3.1 对象已死?堆中几乎存放着Java世界中所有的对象实例,垃圾收集器在对堆进行回收前,第一件事就是要确定这些对象有哪些还“存活”着,哪些已经“死去”(即不可能再被任何途径使用的对象)。3.1.1 引用计数算法很转载 2016-12-27 18:12:21 · 251 阅读 · 0 评论 -
JVM的即时编译器JIT
JVM即时编译器:(Just In Time Compiler) 简称JITJava程序最初是通过解释器(Interpreter)进行解释执行的。当JVM发现某个方法或代码块运行特别频繁时,就会认为这是“热点代码”(Hot Spot Code)。为了提高热点代码的执行效率,就会将这些“热点代码”编译成与本地机器相关的机器码,进行各个层次的优化。完成这个任务的编译器就是即时编译器(JIT)。解释器与编转载 2017-11-10 16:07:18 · 779 阅读 · 0 评论