
JVM
JVM
IT_10-
我爱编程 编程爱我❤️
展开
-
JVM 垃圾回收
如何判断垃圾引用计数给对象设置一个引用计数属性,引用每新增1次计数加1,引用每释放1次计数减1。但是循环引用的对象没法回收。Java中没有采用这种方式。可达性分析哪些对象可以作为根对象?JVM中的根对象分为这几类:【System Class】启动类加载器加载的类对象,如Object、System、String等核心类对象【Native Class】本地方法栈,JVM运行的时候会调用系...原创 2020-04-11 14:30:53 · 1083 阅读 · 0 评论 -
常量池、运行时常量池、字符串常量池
文章目录常量池运行时常量池字符串常量池(StringTable)第一个例子第二个例子JDK8常量池存在于字节码文件中二进制字节码中有:类基本信息、常量池、类方法定义(其中包含虚拟机指令)常量池用于存放编译期生成的各种字面量和符号引用字面量:字面量类似与我们平常说的常量,主要包括:文本字符串:就是我们在代码中能够看到的字符串,例如String a = “aa”。其中”aa”...原创 2020-04-04 21:41:53 · 1201 阅读 · 0 评论 -
synchronized原理详解
文章目录synchronized关键字保证并发三大特性synchronized的两个特性可重入特性不可中断特性synchronized原理monitor监视器锁monitor竞争monitor等待monitor释放monitor是重量级锁JDK6开始对synchronized的优化CASCAS原理CAS适用场景synchronized锁升级过程偏向锁轻量级锁synchronized小结synchr...原创 2020-04-02 13:54:47 · 776 阅读 · 0 评论 -
Java内存模型(JMM)
Java内存模型概念Java内存模型(Java Memory Mode,JMM)用来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下能够达到一致的内存访问效果。Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。Java内存模型和CPU缓存模型类似,是基于CPU缓存模型来建立的,CPU缓存模型如下图,...原创 2020-03-30 23:49:15 · 445 阅读 · 0 评论 -
JVM 运行时数据区
内存结构图解在《Java类的加载》中学习了类加载器子系统的相关知识,这篇文章学习运行时数据区相关知识。上图运行时数据区中,方法区和堆是一个进程对应一个,其他三个是一个线程对应一个。即假设一个进程有五个线程,则有五组虚拟机栈、程序计数器和本地方法栈,共享一个方法区和堆。程度计数器(PC寄存器)这里并非广义上所指的物理寄存器,JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟。寄存器存储指...原创 2020-01-25 15:25:06 · 703 阅读 · 0 评论 -
JVM
虚拟机(Virtual Machine)虚拟机就是一台虚拟的计算机,是一款软件,用来执行一系列虚拟计算机指令。大体上,虚拟机可以分为系统虚拟机和程序虚拟机。系统虚拟机,如VMware,完全是对物理计算机的仿真,提供了一个可运行完整操作系统的软件平台程序虚拟机,如JVM,它专门为执行单个计算程序而设计,在JVM中执行的指令称为Java字节码指令Java虚拟机(JVM)Java虚拟机是一...原创 2020-01-23 09:41:06 · 362 阅读 · 0 评论 -
Java类的加载
Java虚拟机与程序的生命周期Java虚拟机结束生命周期的几种情况:执行了System.exit()方法程序正常执行结束程序在执行过程中遇到了异常或错误而异常终止由于操作系统出现错误而导致Java虚拟机进程终止类的加载概念类的加载是指将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法去内,然后在内存中创建一个java.lang.Class对象用来封装类...原创 2020-01-21 23:08:31 · 498 阅读 · 0 评论