
Java虚拟机
apigfly
热爱编程
展开
-
关于Java中Integer对象缓存问题的分析
Android的Surface看的有点头晕,换个口味,下一篇再更偶然网上看到如下代码:public class IntegerTest { private Integer a = 100; private Integer b = 100; private Integer c = 200; private Integer d = 200; public static void main(String[] args) { new IntegerTe.原创 2021-03-22 16:32:17 · 340 阅读 · 0 评论 -
深入Java虚拟机(思维导图)
本篇是对深入Java虚拟机的总结梳理,原始.xmind文件在这里下载原创 2020-07-15 18:47:29 · 292 阅读 · 1 评论 -
深入Java虚拟机(六)线程同步
可以在语言级支持多线程是Java语言的一大优势,这种支持主要集中在同步上,或调节多个线程间的活动和共享数据。Java所使用的同步是监视器。监视器MonitorJava中的监视器支持两种线程:互斥和协作虚拟机通过对象锁来实现互斥,允许多个线程在同一个共享数据上独立而不干扰地工作协作则是通过Object类的wait方法和notify方法来实现,允许多个线程为了同一个目标而共同工作我们可以把监视器比作一个建筑,它有一个很特别的房间,房间里有一些数据,而且在同一时间只能被一个线程占据。一个线程从进入这原创 2020-07-07 21:21:06 · 252 阅读 · 0 评论 -
深入Java虚拟机(五)垃圾收集
Java 虚拟机的堆里存放着程序运行中所创建的所有对象。虚拟机可以使用new、newarray、anewarray和multianewarray指令来创建对象,但是没有明确的代码来释放它们。垃圾收集就是自动释放不再被程序所使用的对象的过程。本篇文章并不是要描述正式的 Java 垃圾收集器,因为根本不存在这样一个正式的描述。前面说过,Java 虚拟机规范不要求任何特定的垃圾收集技术,这根本不是必需的。但是在发明可以无限使用的内存前,大部分的 Java 虚拟机都会附带垃圾收集功能。为什么要使用垃圾收集垃圾原创 2020-07-05 14:32:19 · 2689 阅读 · 0 评论 -
深入Java虚拟机(番外篇)ClassLoader 初探
本篇文章是在深入Java虚拟机(四)的基础上产生的一些想法,从另一个方面研究下类加载问题。面向接口编程在项目工程目录定义了一个获取钱包余额的接口,而作为普通人会返回50大洋,供你吃喝玩乐。public interface Pocket { int getBalance();}public class NormalUser implements Pocket{ @Override public int getBalance() { return 50;原创 2020-07-01 19:06:14 · 381 阅读 · 0 评论 -
深入Java虚拟机(四)连接模型
从程序猿的角度来看,理解Java体系结构最重要的方面之一就是连接模型。前面曾说过,Java的连接模型允许用户自行设计类装载器,通过自定义的类装载器,程序可以装载在编译时并不知道或许尚未存在的类或者接口,并动态连接它们。上一篇文章只是简单描述了类生命周期的各个阶段,但是没有深究装载和解析的细节。现在,我们用整个篇幅来讲一下装载和解析的细节,并展示解析过程如何和动态扩展相关联。解析当编译一个Java程序时,每个类或者接口都会编译成独立的class文件。虽然class文件之间看上去毫无关联,实际上它们之.原创 2020-06-30 23:29:25 · 1626 阅读 · 0 评论 -
深入Java虚拟机(三)Java类型的生命周期
上一篇简单记录了Java class文件的格式,它以标准的二进制形式来表现Java类型。本篇我们来看下当二进制的类型数据被导入到和Java虚拟机中时,到底会发生什么。我们以一个Java类型(类或接口)的生命周期(从进入虚拟机开始到最终退出)为例来讨论开始阶段的装载、连接和初始化,以及占Java类型生命周期绝大部分时间的对象实例化、垃圾收集和对象finalize,然后是Java类型生命周期的结束(从虚拟机中卸载)生命周期的开始–类型装载、连接与初始化Java虚拟机通过装载、连接和初始化一个Java类型,使原创 2020-06-21 16:48:53 · 287 阅读 · 0 评论 -
深入Java虚拟机(二)Java Class 文件
Java Class 是什么?Java Class 文件是对Java程序二进制文件格式的精确定义。每一个Java Class文件都对一个Java类或者接口作出了全面的描述。一个Java Class文件只能包含一个类或接口。class文件不一定必须与Java语言相关,可以使用其他语言来编写程序,然后将其编译为class文件Java class文件是8位字节的二进制流。数据项按顺序储存在class文件中,相邻项之间没有任何间隔,这样可以使得class文件紧凑。占据多个字节空间的项按照高位在前的顺序分为几原创 2020-06-14 17:59:10 · 200 阅读 · 0 评论 -
深入 Java 虚拟机(一)Java 虚拟机概述
Java 虚拟机之所以被称为是『虚拟』的,就是因为它仅仅是有一个规范来定义的抽象计算机。想深入理解Java虚拟机的同学建议先学习下计算机组成原理会事半功倍哟。Java 虚拟机是什么?要理解 Java 虚拟机,首先必须意识到,当我们提到 Java 虚拟机时,可能指的是三种不同的东西:抽象规范一个具体的实现一个运行中的虚拟机实例Java 虚拟机抽象规范仅仅是个概念。而该规范的具体实现可能来自多个供应商,并存在多个平台上。它或者完全用软件实现,或者以硬件和软件结合的方式来实现。当运行一个 J原创 2020-06-04 18:11:26 · 740 阅读 · 0 评论