JVM
文章平均质量分 67
潘威威
这个作者很懒,什么都没留下…
展开
-
Java虚拟机札记-目录
本目录会随着Java虚拟机札记专栏的更新而更新。 JVM虚拟机札记-目录 JVM虚拟机札记-概述 Java虚拟机札记-Java内存区域划分 Java虚拟机札记-垃圾回收与内存分配 Java虚拟机札记-Class类文件结构 Java虚拟机札记-类加载机制 Java虚拟机札记-Java内存模型 Java虚拟机札记-线程安全与锁优化原创 2018-01-17 21:32:54 · 836 阅读 · 2 评论 -
Java虚拟机札记-Class类文件结构
众所周知,Java是与平台无关的。字节码是Java虚拟机实现Java语言平台无关性的基石。Class文件是字节码文件。 平台无关性 程序的运行不会平台的变化而无法运行或出现运行错误,这样的特性就称为平台无关性。 程序需要在由OS和CPU所构成的平台上运行。每个平台都有自己独特的机器指令,所谓平台的机器指令就是可以被该平台直接识别、执行的一种由0和1组成的序列代码。相同的CPU和不同的OS所原创 2018-01-21 21:38:19 · 943 阅读 · 0 评论 -
Java虚拟机札记-类加载机制
虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、解析、初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。虚拟机如何加载Class文件?Class文件文件进入内存后是如何形成Java类型的?这就是本文要介绍的内容。 在Java语言中,类的加载、连接、初始化都是在程序运行期间完成的,而不是在编译期间完成。这种策略虽然会在类加载时增加一些性能开销,但却大大原创 2018-01-22 22:02:04 · 1098 阅读 · 0 评论 -
Java虚拟机札记-Java内存模型
什么是Java内存模型 Java内存模型(Java Memory Model,JMM),是Java虚拟机规范中的定义,用来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各个平台下都能达到一致的并发效果。 Java内存模型目标 定义程序中各个变量的访问规则,比如在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。此处的变量包括实例字段、静态字段和构成数组对象的元素,原创 2018-01-23 21:43:43 · 452 阅读 · 0 评论 -
Java虚拟机札记-线程安全与锁优化
线程安全 什么是线程安全 当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方法进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象就是线程安全的。 线程安全级别 不可变 绝对线程安全 相对线程安全 线程兼容 线程对立 不可变 不可变的的数据一定是线程安全的。Java语言中,如果共享数据是基原创 2018-01-24 08:12:35 · 438 阅读 · 1 评论 -
Java虚拟机札记-概述
今天开始学习Java虚拟机。本文介绍Java虚拟机的基础知识。 JDK与JRE 在学习Java虚拟机之前,我们先来复习下JRE和JDK的定义。JRE,Java Runtime Environment,意为Java运行时环境,包含Java虚拟机和Java API类库。JDK,ava Development Kit ,意为Java开发工具包,包含JRE和Java工具(如编译Java程序的Javac原创 2018-01-17 22:33:50 · 1092 阅读 · 0 评论 -
Java虚拟机札记-Java内存区域划分
众所周知,Java程序员不需要为对象手动分配和释放内存。这要归功于虚拟机。但凡事有利就有弊,一旦出现内存溢出或泄露方面的问题,程序员如果不了解虚拟机是如何管理内存的,排查问题不是件容易的事情。本文将介绍Java虚拟机管理的各个内存区域,为以后学习虚拟机是如何管理内存打好基础。 运行时数据区域 根据《Java虚拟机规范》,Java虚拟机管理的内存可以分为以下几个运行时数据区域。 程序计数...原创 2018-01-18 22:05:47 · 1060 阅读 · 0 评论 -
Java虚拟机札记-垃圾回收与内存分配
目前内存分配和垃圾回收已经实现了“自动化”,为什么我们还要关注它们呢?当排查各种内存溢出、内存泄露问题时,当垃圾回收成为提高系统并发量的瓶颈时,有必要对内存的动态分配和垃圾回收进行监控和调节。GC需要考虑三个问题:哪些内存需要回收?什么时候回收?如何回收? 哪些内存需要回收? 在Java虚拟机札记-Java内存区域划分一文中,我们已经学习了Java运行时内存区域的各个部分。其中,程序计数器...原创 2018-01-19 22:56:33 · 1351 阅读 · 1 评论 -
Java虚拟机札记-内存区域
众所周知,Java程序员不需要为对象手动分配和释放内存。这要归功于虚拟机。但凡事有利就有弊,一旦出现内存溢出或泄露方面的问题,程序员如果不了解虚拟机是如何管理内存的,排查问题不是件容易的事情。本文将介绍Java虚拟机管理的各个内存区域,为以后学习虚拟机是如何管理内存打好基础。 运行时数据区域 根据《Java虚拟机规范》,Java虚拟机管理的内存可以分为以下几个运行时数据区域。 程序计数器原创 2019-06-30 19:53:01 · 189 阅读 · 0 评论