jvm虚拟机
InAHurryv
或取诸怀抱悟言一室之内
展开
-
java语言的线程状态之再记并发
一、java 线程的状态:1、new 新创建线程 但是还未启动2、Runable 就绪或者运行3、waiting 无限期等待比如obj.wait() Thread.sleep()4、Timed Waiting 定时等待obj.wait(1000) Thread.sleep(1000)5、Blocked 阻塞 当一个线程进入同步代码尝试获取锁又获取不到时会发生阻塞、6、Terminated 线程运行结束对于obj.wait() 建议将其放置在循环条件内,用来应对虚假唤醒。synchronize原创 2020-12-29 22:41:54 · 80 阅读 · 0 评论 -
ThreadLocal之四种应用类型
在jdk1.2之前关于对象的引用其实只有一个定义:若reference类型的数据存储着另外一块内存的初始地址,那么这块内存就代表着一个引用。对应的有关引用的状态就是引用和被引用。其实在后来语言的发展过程中,发现对于一些缓存类型的对象若是内存够用则存在,若是不够则清除。那么如何描述这种类型的对象呢?于是便出现了多种类型的引用类型。1、java你知道的引用类型?强引用:a = new A();只要引用关系存在永远不会被gc软引用:SoftReference sr = new SoftReference&l原创 2020-12-25 19:25:42 · 394 阅读 · 1 评论 -
GC
1、关于堆中对象分配的规则?jvm中 将对象分配在堆上,而堆又分为yonggen(Eden、from、to)、oldgen、metaspace,一般情况下对象分配在eden区,Eden区满了之后进行 minor gc(此时对from区也gc),将存活的对象转到to区,之后若eden再满再gc,反反复复知道某对象一直在from 或者to区 存活了多轮gc之后达到某个阈值,则将对象放入oldgen。 然而还有很多特殊情况,比如eden和from区gc后对象无法放到to区,那么就只能放到老年代oldgen,老年原创 2020-12-25 18:10:34 · 137 阅读 · 0 评论 -
jvm 指令的设计初衷
由于跨平台的设计,不同的cpu有不同的架构和其指令集,所以java就不能以具体的物理机作为设计指令集的依据。1、基于栈的指令集架构和基于寄存器的指令集架构的区别是什么?基于栈的指令集:字节对齐 指令集小、跨平台、容易编译基于寄存器的指令集:完成同样的功能 指令个数少 性能高...原创 2020-12-24 17:31:28 · 120 阅读 · 1 评论 -
什么是虚拟机?以及执行引擎的优化
本科时候阅读过虚拟机相关的书籍。这里我对自己提几个问题1、什么是虚拟机?与物理机有什么区别?我们知道虚拟机和物理机都可以有代码执行能力,而物理机是建立在操作系统、处理器、缓存、指令集上,而虚拟机可以与本地物理机无关,从而可以制定不同的指令集和不同结构体系的执行引擎,而且不需要关心这些在虚拟机执行引擎上执行的指令是否能够被物理机执行。2、将.java文件编译为.class文件和JIT的编译是一个意思吗?一般我们把.java->.class称为前端编译,而JIT是执行引擎将字节码文件转化为本地机器原创 2020-12-24 16:21:24 · 203 阅读 · 0 评论 -
虚拟机层面的方法调用
我们知道java作为静态类型语言(编译期确定类型)直到java 8 之后才使用lambda表达式 对动态特性进行了代码层面的使用。虚拟机关于方法调用的指令有 invokestatic invokespecial invokevirtual invokeinterface,这些指令的第一个参数是在编译期间产生的符号引用,而动态语言是在运行期才能确定类型。那么java在虚拟机层面支持动态类型就成了java平台的发展趋势。java7 的java.lang.invoke 包来支持动态特性。之前我们的方法调用主要通过原创 2020-12-23 19:11:12 · 113 阅读 · 0 评论 -
类加载器的了解
类加载分为:加载—链接(验证、准备、解析)—初始化—使用----卸载。加载:通过全限定名加载二进制流、将该流的静态结构转化为方法区运行时数据结构验证:文件格式验证(魔数、基本数据类型)、元数据验证(是否都继承了Object,非抽象类是否实现了接口中的所有方法)、字节码验证(操作数栈的数据类型与指令代码序列都能配合工作,不会出现在操作数栈中放了int类型的变量,使用时却按照long类型来加载入本地变量、类型转换是有效的)、符号引用验证;准备:将static类变量赋予默认值、static final 变量原创 2020-12-22 15:53:01 · 96 阅读 · 1 评论