Java虚拟机指令是由(占用一个字节长度、代表某种特定操作含义的数字)操作码Opcode,以及跟随在其后的零至多个代表此操作所需参数的称为操作数 Operands 构成的。由于Java虚拟机是面向操作数栈而不是寄存器的架构,所以大多数指令都只有操作码,而没有操作数。 字节码指令集是一种具有鲜明特点、 ...
分类:
编程语言 时间:
2018-11-11 23:37:07
阅读次数:
281
停顿现象 很多网上资料都会说到JAVA语言的一个劣势就是垃圾搜集时,整个进程会停顿。 到底是不是呢? 答案是确实存在。 为什么会停顿 垃圾收集的一个前提是要判断进程中的对象哪些是垃圾内存,哪些不是。 怎么判断呢,JVM里面使用了一种叫可达性分析的技术来枚举根节点。 一言以蔽之,JVM的内存空间里的若 ...
分类:
编程语言 时间:
2018-11-11 12:52:48
阅读次数:
192
概念 垃圾收集是很多使用JAVA语言的IT从业者了解得比较少的地方。 但是涉及性能时非常重要。大公司面试除了算法,这部分也是会经常考察的地方。 《深入理解JAVA虚拟机》一书中讲到JVM的垃圾收集算法和垃圾收集器。 垃圾收集算法分为: 1、标记清除算法 通常用在回收老年代内存。 最早的搜集算法就是标 ...
分类:
编程语言 时间:
2018-11-11 12:49:01
阅读次数:
166
java历史 1996.01.23发布Jdk1.0 1998.12.04发布jdk1.2(里程碑的版本)注意:集合容器Collection和Map都是从1.2开始 1999.04.27HotSpot虚拟机发布,成为1.3后Sun JDK的默认虚拟机,这本书主要讲这个虚拟机 2004.09.30发布j ...
分类:
编程语言 时间:
2018-11-06 22:22:19
阅读次数:
134
今天想做spring的类加载的实验,所以恶补下java类加载的知识,看了深入理解java虚拟机211页的示例中的静态代码块,突然想到疯狂java里面总结非静态代码块总结得很好,当时自己看了之后感觉豁然开朗,但是现在只有一点印象,只记得是好像和构造方法有关,编译器处理的时候会优化。而这个非静态代码块的 ...
分类:
编程语言 时间:
2018-11-02 02:04:26
阅读次数:
254
周志明的《深入理解Java虚拟机》很好很强大,阅读起来颇有点费劲,尤其是当你跟随作者的思路一直探究下去,开始会让你弄不清方向,难免有些你说的啥子的感觉。但知识不得不学,于是天天看,反复看,就慢慢的理解了。我其实不想说这种硬磨的方法有多好,我甚至不推荐,我建议大家阅读这本书时,由浅入深,有舍有得,先从 ...
分类:
编程语言 时间:
2018-10-29 19:57:40
阅读次数:
191
摘抄自周志明老师的《深入理解Java虚拟机:JVM高级特性与最佳实践》13.2.2 线程安全的实现方法 1.名词解释 同步是指锁哥线程并发访问共享数据时,保证共享数据同一时刻只被一个线程访问 互斥同步(阻塞同步)是一种悲观的并发策略,总是认为只要不去做正确的同步措施(加锁),那就肯定会出现问题。 阻 ...
分类:
编程语言 时间:
2018-10-22 17:55:36
阅读次数:
172
查看步骤 cmd执行命令: java -XX:+PrintCommandLineFlags -version 输出如下(举例): 针对上述的-XX:UseParallelGC,这边我们引用《深入理解Java虚拟机:JVM高级特性与最佳实践》的介绍: 也就是说,打开此开关,使用的垃圾收集器是:新生代( ...
分类:
其他好文 时间:
2018-10-22 17:49:13
阅读次数:
168
Java运行详解 一、从机器语言到高级语言 计算机只认识0、1,对应于电路中低电平和高电平。因此,早期程序员使用特定的0、1串操控计算机,从而达到想要的目标效果。这些0、1串就称作指令,也叫机器码(比如0000代加载,000代表寄存器A,000000000000 代表地址为0的存储器,所以0000, ...
分类:
编程语言 时间:
2018-10-15 00:41:23
阅读次数:
229
本文参考《深入理解java虚拟机》 双亲委派模型中将 类加载器进行等级划分,当一个类加载器收到一个类加载的请求时,自己先不会处理这个请求,而是将这个请求交给父类加载器,最终请求会传到启动类加载器,如果父类加载器不能完成这个请求,就会向下一级进行加载,直到将类加载进来。 这个模型有一个好处,java中 ...
分类:
其他好文 时间:
2018-09-30 20:13:31
阅读次数:
190