Java 进阶
文章平均质量分 90
Java 进阶学习
永琪-
做安卓的小弟
展开
-
理解JVM中对象与垃圾回收机制
虚拟机中对象的创建过程一般的内存分配, 内存区域规整的话使用指针碰撞,不规整使用空闲列表,还要考虑并发安全问题空间初始化:设为零值 int=0,boolean=false设置:对象初始化:调构造方法对象的内存布局:对象的访问定位句柄相当于一个中转站,从对象引用指向对象实例,类似二次映射直接指针:Object o = new Object() o就是直接指针,hotspot基本使用直接指针判断对象存活1.引用计数法,存在对象相互引...原创 2021-08-04 18:35:54 · 259 阅读 · 0 评论 -
序列化与反序列化
序列化 将数据结构或对象转换成二进制串的过程。主要用于网络传输,数据持久化,一般序列化也称为编码(Encode)。反序列化 将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程。主要用于从网络,磁盘上读取字节数组还原成原始对象,一般反序列化也称为解码 (Decode)。几种常见的序列化和反序列化协议XML&SOAP XML 是一种常用的序列化和反序列化协议,具有跨机器,跨语言等优点,SOAP(Simple Object Access protocol) 是一原创 2021-07-08 21:00:36 · 179 阅读 · 0 评论 -
理解JVM运行时数据区
jvm的运行过程class -->jvm -->机器码运行时数据区域Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域程序计数器 唯一不会OOM,时间片轮转机制,记录上次执行到的字节码地址,下次继续往下执行java虚拟机栈 一种后进先出的数据结构,存储当前线程运行方法所需的数据,指令、返回地址 ,包含栈帧(局部变量(8大基础数据类型+引用)、操作数栈、动态连接、完成出口(返回地址)),大小限制 -Xss:设置线程栈大小...原创 2021-07-28 15:37:12 · 161 阅读 · 0 评论 -
Synchronized关键字原理和底层优化
synchronized是java中的一个关键字,由jvm提供的一种重量级的同步锁,按锁的不同状态synchronized属于悲观锁、非公平锁、可重入锁。synchronized原创 2021-07-02 11:46:30 · 247 阅读 · 0 评论 -
Java中的AQS基本原理
AQS即AbstractQueuedSynchronizer缩写,翻译为抽象队列同步器,平时使用较多的ReentrantLock就是基于AQS实现。原创 2021-06-09 17:58:52 · 615 阅读 · 1 评论 -
Java中CAS基本原理
java在1.5之前都是靠synchronized关键字保证同步,synchronized保证了无论哪个线程持有共享变量的锁,都会采用独占的方式来访问这些变量。这种情况下:1.在多线程竞争下,加锁、释放锁会导致较多的上下文切换和调度延时,引起性能问题2.如果一个线程持有锁,其他的线程就都会挂起,等待持有锁的线程释放锁。3.如果一个优先级高的线程等待一个优先级低的线程释放锁,会导致优先级倒置,引起性能风险。对比于悲观锁的这些问题,另一个更加有效的锁就是乐观锁。 乐观锁就是:每次不加锁而是假设没原创 2021-05-28 16:43:17 · 234 阅读 · 0 评论 -
Java高级特性之注解与反射
注解注解在开发中的作用不言而喻,目前比较流行的开源框架基本都用到了注解,本文结合Retrofit框架的注解来学习和总结。annotation注解Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。 注解是元数据的一种形式,提供有关于程序但不属于程序本身的数据,不会影响代码的实际逻辑,仅仅起到辅助性的作用。内置注解比较常见的内置注解:@Override此注解只适用于修饰方法,主要用于在子类中覆盖父类中的方法@Deprecated此注..原创 2021-05-24 17:21:59 · 135 阅读 · 0 评论 -
Java高级特性之泛型
1.为什么需要使用泛型?先来看一段代码 public int addInt(int x, int y) { return x + y; } public float addFloat(float x, float y) { return x + y; }可以看到实现一个简单的加法需求,需要对int和float类型分别处理,这时候想要实现double类型求和,就得重新再写一个double类型的方法。定义了一个List类.原创 2021-05-14 19:04:51 · 116 阅读 · 0 评论