ConcurrentHashMap 1 JDK8版本的改进在jdk1.7版本中,ConcurrentHashMap由数组+Segment+分段锁实现,其内部分为一个个段(Segment)数组,Segment通过继承ReentrantLock来进行加锁,通过每次锁住一个Segment来降低锁的粒度而且保证了每个Segment内的操作的线程安全性,从而实现全局线程安全。 但是这么做的缺陷就是每次通过 hash 确认位置时需要 2 次才 2023-03-12 java基础 > 多线程 #多线程 #集合 #ConcurrentHashMap
垃圾回收(Garbage Collect-GC) 1 对象的引用Java中的引用的定义:如果reference(引用)类型的数据中存储的数值代表的是另外一块内存的起始地址,就称这块内存代表着一个引用。 希望能描述这样一类对象:当内存空间还足够时,则能保留在内存之中;如果内存空间在进行垃圾收集后还是非常紧张,则可以抛弃这些对象。 很多系统的缓存功能都符合这样的应用场景。四种引用类型: 强引用:在Java中最常见的就是强引用,也是在开发过程中经常会 2023-03-11 java基础 > jvm #jvm
nacos配置中心 Nacos版本:2.0.4 nacos2.x已不支持ribbon,使用nacos2.x需要手动引入LoadBalancer 1 基本使用使用外部数据源 12345spring.datasource.platform=mysqldb.num=1db.url.0=jdbc:mysql://127.0.0.1:3306/mynacos?characterEncoding=utf8&connec 2023-03-11 spring框架 > springcloud > nacos #springcloud #nacos #配置中心
Zookeeper-API 1 Zookeeper API1.1 引入Zookeeper依赖12345<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.7.1</version></depe 2023-03-11 中间件 > Zookeeper #Zookeeper
运行时数据区 在加载阶段的第二三步可以发现由运行时数据,堆,方法区等名词。第二步将这个字节流所代表的静态存储机构转化为方法区的运行时数据结构。第三步在java堆中生成一个代表这个类的java.lang.Class对象,作为方法区中这些数据的访问入口。说白了就是类文件被类加载器加载进来之后,类中的内容(比如变量,常量,方法,对象等这些数据得要有个去处,也就是要存起来,存储的位置肯定是JVM中有对应的空间) 1 官 2023-03-11 java基础 > jvm #jvm
jvm调优 1 常用命令1. jps—查看java进程 2. jinfo: (1)实时查看和调整JVM配置参数 (2)用法:jinfo -flag name PID 查看某个java进程的name属性的值 例:jinfo -flag MaxHeapSize PID jinfo -flag UseG1GC PID (3)修改:参数只有被标记为 2023-03-11 java基础 > jvm #jvm
类加载器(ClassLoader) 负责读取Java字节代码,并转换成java.lang.Class 类的一个实例的代码模块。类加载器除了用于加载类外,还可用于确定类在Java虚拟机中的唯一性。一个类在同一个类加载器中具有唯一性(Uniqueness),而不同类加载器中是允许同名类存在的,这里的同名是指全限定名相同。但是在整个JVM里,纵然全限定名相同,若类加载器不同,则仍然不算作是同一个类,无法通过 instanceOf 、equ 2023-03-11 java基础 > jvm #jvm
类加载机制 类加载机制是指将类的字节码文件所包含的数据读入内存,同时会生成数据的访问入口的一种特殊机制。那么可以得知,类加载的最终产品是数据访问入口。 加载.class文件的方式: 1.从本地系统中直接加载:最常使用 2.通过网络下载class文件:Web Applet,也就是小程序应用 3.从zip,jar等归档文件中加载class文件:后续演变成jar,war格式 2023-03-11 java基础 > jvm #jvm
jvm初识 1 官网1.1 JDK 8https://docs.oracle.com/javase/8/ 1.2 The relation of JDK/JRE/JVMReference -> Developer Guides -> 定位到:https://docs.oracle.com/javase/8/docs/index.html 1.3 源码到类文件1.3.1 源码12345678 2023-03-11 java基础 > jvm #jvm
内存模型 1 图解一块是非堆区,一块是堆区。堆分为两大区,old区和young区。young区分为两大快,一个是Survivor区(s0+s1),一块是Eden区。 Eden:s0:s1=8:1:1。s0和s1一样大,也可以叫做From和To。 2 对象创建所在区域一般情况下,新创建的对象都会被分配到Eden区,一些特殊大的对象会直接分配到Old区。 比如有对象A,B,C等创建在Eden区,但是Eden 2023-03-11 java基础 > jvm #jvm