1.垃圾标记阶段算法 在堆里存放着几乎所有的Java对象实例,在Gc执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象。只有被标记为己经死亡的对象,Gc才会在执行垃圾回收时,释放掉其所占用的内存空间,因此这个过程我们可以称为垃圾标记阶段。那么在JVM中究竟是如何标记一个死亡对 ...
分类:
编程语言 时间:
2020-09-18 01:30:02
阅读次数:
36
本文主要阐述软件性能测试中的一些调优思想和技术,节选自作者新书《软件性能测试分析与调优实践之路》部分章节归纳。 一、 性能分析与调优思想 1、性能分析调优模型 性能测试除了为获取性能指标外,更多是为了发现性能瓶颈和性能问题,然后对性能问题和瓶颈进行分析和调优,在当今互联网高速发展的时代,性能调优的模 ...
分类:
其他好文 时间:
2020-09-17 23:51:35
阅读次数:
44
在面向对象的编程中,会很频繁的使用到动态分派,如果每次动态分派的过程中都要重新在类的方法元数据中搜索合适的目标的话可能影响到执行效率。为了提高性能,JVM采用在类的方法区建立一个虚方法表(virtual method table)(非虚方法不会出现在表中)来实现。使用索引代替查找。 每个类中都有一个 ...
分类:
其他好文 时间:
2020-09-17 23:18:51
阅读次数:
24
运行时数据区 程序计数器/PC寄存器 线程私有,程序计数器是一块较小的内存空间,当前线程所执行的字节码的行号指示器。 字节码解释器工作时就是通过改变计数器的值来选择下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖计数器完成。 如果线程在执行java方法,计数器记录 ...
分类:
编程语言 时间:
2020-09-17 23:11:27
阅读次数:
31
问题: JVM安全点是什么概念? finally是如何实现的?finally中抛出异常会怎么样? 1.JVM安全点是什么概念? 安全点就是某些记录线程此时调用栈、寄存器等一些重要的数据区域里什么地方包含了GC要管理的指针(对象引用),而这些对象引用是通过OopMaps结构进行记录的,可以直接通过对O ...
分类:
其他好文 时间:
2020-09-17 22:19:26
阅读次数:
33
jvm是如何进行方法的调用的? 方法重载:方法名相同,参数类型不同的一组方法的关系,叫做方法重载。在编译阶段就能够确定具体调用哪个重载方法。 方法重写:子类方法跟父类的方法名参数类型一样,叫做方法重写。会根据调用者的动态类型选取实际的目标方法。 java虚拟机会根据方法描述判断方法是否重写。非私有, ...
分类:
其他好文 时间:
2020-09-17 20:52:44
阅读次数:
29
##反射 反射:是底层技术 (开发工具和框架,使代码更通用) java.lang.reflect//反射包 ###1).类对象Class 是类加载的产物,封装了一个类的所有信息(类名,父类,接口,属性,方法,构造方法…) 类加载: 当JVM第一次使用一个类的时候,需要读取这个类对应的字节码文件,获取 ...
分类:
编程语言 时间:
2020-09-17 18:56:15
阅读次数:
34
1、Java为什么属于编译型+解释型的高级语言? 这个编译器编译之后,生成的类文件不能直接在对应的平台上运行,而是通过JVM来翻译才能在对应的平台上运行,而这个翻译大多数时候是解释的过程,但是也会有编译,称之为运行时编译,即JIT(Just In Time)。综上所述,Java是一门编译型+解释型的 ...
分类:
编程语言 时间:
2020-09-17 17:31:23
阅读次数:
35
【缓冲流、转换流、序列化流】 主要内容 缓冲流 转换流 序列化流 打印流 第一章 缓冲流 昨天学习了基本的一些流,作为IO流的入门,今天我们要见识一些更强大的流。比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化流等等。这些功能更为强大的流,都是在基本的流对象基础之上创建而来 ...
分类:
其他好文 时间:
2020-09-17 13:28:10
阅读次数:
31
前言说jvm的内存模型前先了解一下物理计算机的内存处理。物理计算器上用户磁盘和cpu的交互,由于cpu读写速度速度远远大于磁盘的读写速度速度,所以有了内存(高速缓存区)。但是随着cpu的发展,内存的读写也跟不上cpu的读写速度了,cpu的产商就给每个cpu加入了一个高速缓存,也就是下面的结构。JVM组成解析运行时数据区运行时数据区中包括:栈、堆、方法区(元空间)、本地方法栈、程序计数器。详细概念在
分类:
其他好文 时间:
2020-09-17 12:44:01
阅读次数:
25