
Java基础
文章平均质量分 88
qq_36744284
这个作者很懒,什么都没留下…
展开
-
synchronized锁及JVM的锁优化
文章目录synchronized自旋锁与自适应自旋锁消除锁粗化轻量级锁偏向锁synchronized同步块的原子性:虚拟机未把lock和unlock操作直接开放给用户使用,但是却提供了更高层次的字节码指monitorenter和monitorexit来隐式地使用这两个操作,这两个字节码指令反映到Java代码中就是同步块synchronized关键字,因此在synchronized块之间的操作也具备原子性。同步块的有序性:由“一个变量在同一个时刻只允许一条线程对其进行lock操作”这条规则获得的原创 2021-08-11 19:10:48 · 256 阅读 · 0 评论 -
Java内存模型
文章目录Java内存模型主内存和工作内存内存间交互操作8种操作必须满足的规则volatile型变量的特殊规则volatile的两种特性volatile的性能Java内存模型中对volatile变量定义的特殊规则原子性、可见性、有序性原子性(Atomicity)可见性(Visibility)有序性(Ordering)先行发生原则Java内存模型Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平原创 2021-08-11 14:47:08 · 101 阅读 · 0 评论 -
JVM内存溢出
文章目录内存泄漏和内存溢出辨析内存溢出示例堆内存栈内存方法区直接内存JDK为我们提供的工具jpsjstatjinfojmapjhatjstackvisualvm浅堆和深堆问题处理堆溢出栈溢出java.lang.OutOfMemoryError: unable to create new native threadCPU100%,内存占用过高内存泄漏和内存溢出辨析内存溢出:实实在在的内存空间不足导致;内存泄漏:该释放的对象没有释放,多见于自己使用容器保存元素的情况下。内存溢出示例堆内存/**原创 2021-08-02 17:03:01 · 128 阅读 · 0 评论 -
Runnable、Callable、Future、LockSupport、happens-before
Thread、Runnable、Callable原创 2021-07-15 23:57:07 · 103 阅读 · 0 评论 -
JVM总结
运行时数据区域定义:Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域类型:程序计数器、虚拟机栈、本地方法栈、Java堆、方法区(运行时常量池)、直接内存各个区域的作用程序计数器:较小的内存空间,当前线程执行的字节码的行号指示器;各线程之间独立存储,互不影响,占用空间小,也无法干涉;虚拟机栈:线程私有,线程在运行时,每个方法在执行的同时都会创建一个栈帧用于存储局部变量表,操作数栈,动态链接,方法出口等信息。每个时刻正在执行的当前方法就是虚拟机栈顶的栈桢。方法的执原创 2021-07-15 19:09:03 · 196 阅读 · 0 评论 -
JAVA SPI
SPI发现机制Springmvc的无web.xml启动方式也是用的SPI自动发现机制处理的,都是通过在配置文件中加入实现类名。标准接口:package spi;public interface Fruit { void name();}插拔式实现类1:package spi;public class Apple implements Fruit { @Ove...原创 2019-12-21 21:11:32 · 139 阅读 · 0 评论 -
Java类加载过程、ClassLoader和Class.forName详解
链接阶段会赋予静态变量的初始值forName都是已经执行完了链接阶段。Class.forName(String name):默认的initialize为true,就是执行初始化阶段。Class.forName(String name, boolean initialize, ClassLoader loader):可以设置是否执行初始化阶段ClassLoad:defineClass()...原创 2019-06-12 01:10:23 · 1719 阅读 · 0 评论 -
JDK动态代理与CGLIB(一篇文章就够了)
jdk动态代理与cglib原创 2019-06-10 14:29:24 · 303 阅读 · 0 评论 -
Java中的clone
Java中的clone使用场景浅克隆深克隆使用场景假如一个对象有很多属性,我们想使用这个对象,但是设置实现Cloneable接口,重写浅克隆深克隆原创 2019-05-10 18:32:59 · 182 阅读 · 0 评论 -
java中的序列化与反序列化及其源码分析(特别详细)
Java中的序列化概念序列化与反序列化自定义序列化源码分析概念把对象转换为字节序列的过程称为对象的序列化,把字节序列恢复为对象的过程称为对象的反序列化。 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中; 2) 在网络上传送对象的字节序列。在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见...原创 2019-05-01 17:57:23 · 1384 阅读 · 0 评论 -
简单谈谈this关键字
简单谈谈this关键字this关键字代表的含义this包含的对象的属性this调用构造方法继承情况下的thisthis调用构造方法this引用变量this引用方法this关键字代表的含义它表示当前的对象,也正是如此,它不能出现在静态部分(static修饰的),因为那是类所有的,不存在对象。举一个this关键字最常见的例子:public class Test { private in...原创 2019-04-18 01:02:50 · 251 阅读 · 0 评论 -
类加载时的初始化顺序
类的初始化顺序基础知识类的加载静态成员变量和成员变量的初始化静态部分只会初始化一次静态部分的初始化顺序非静态部分的初始化顺序new关键字试一试带有继承关系的初始化子类重写父类的方法并在初始化的时候执行基础知识一个Java文件从类层面上可以分为两部分,静态和非静态。静态部分属于类所有,非静态部分为对象所有,静态部分为所有对象共享。类的加载当我们使用一个类的时候,我们必须先初始化这个类,它由J...原创 2019-04-16 17:24:01 · 582 阅读 · 0 评论 -
finally子句的用法
finally子句的用法标题标题finally子句是异常捕获的一部分try{}catch(Exception e){}finally{}三部分的执行顺序是try块检测并抛出异常,然后由catch子句捕获,最后执行finally子句。try块必须有,catch和finally子句不一定全都必须,可以二选一,也可都有。finally子句的作用是不论try和catch中的代码执行情况...原创 2019-04-20 19:38:32 · 1144 阅读 · 0 评论