1、Java SE Java基础 数据类型/常量与变量 标识符/关键字/运算符/流程控制 数组/方法 类和对象 成员变量/局部变量 匿名对象/this关键字/构造方法 封装/继承/多态 抽象/接口/内部类 集合 Java高级 线程/锁 JDK 反射 JVM GC IO和NIO,AIO 2、JAVA ...
分类:
编程语言 时间:
2020-09-18 02:19:16
阅读次数:
40
1.垃圾标记阶段算法 在堆里存放着几乎所有的Java对象实例,在Gc执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象。只有被标记为己经死亡的对象,Gc才会在执行垃圾回收时,释放掉其所占用的内存空间,因此这个过程我们可以称为垃圾标记阶段。那么在JVM中究竟是如何标记一个死亡对 ...
分类:
编程语言 时间:
2020-09-18 01:30:02
阅读次数:
36
在面向对象的编程中,会很频繁的使用到动态分派,如果每次动态分派的过程中都要重新在类的方法元数据中搜索合适的目标的话可能影响到执行效率。为了提高性能,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
一.什么是cas CAS的全称是Compare-And-Swap,他是一条CPU并发原语。 java中的CAS,都是通过unsafe类实现的,其主要的操作是,当一个线程从主内存拿到一个变量到自己工作内存,并经过计算处理,准备写回主内存的时候,会首先比对当前主内存的变量指向的内存地址里面的值,与期望值 ...
分类:
编程语言 时间:
2020-09-17 20:08:32
阅读次数:
36
##反射 反射:是底层技术 (开发工具和框架,使代码更通用) 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
类型提升 如果参与运算的两个数其中一个是整型,那么整型可以自动提升到浮点型 需要特别注意,在一个复杂的四则运算中,两个整数的运算不会出现自动提升的情况。例如: double d = 1.2 + 24 / 5; // 5.2可以将浮点数强制转型为整数。如果要进行四舍五入,可以对浮点数加上0.5再强制转 ...
分类:
编程语言 时间:
2020-09-17 16:45:57
阅读次数:
26