java
qq_23693215
这个作者很懒,什么都没留下…
展开
-
JAVA JVM内存结构
JVM内存模型包含:堆、栈、方法区、程序计算器、本地方法区。堆:堆是存放的是在程序运行中new出来的对象,里面包含了4个区,伊甸区、from、to、老年代。首先new出来的对象先进伊甸区 然后当伊甸区满的时候,会触发gc,然后伊甸区存活下来的会进入from,这个时候伊甸区和to是空的 当第二批伊甸区满的时候,在次触发gc(这里gc包含from也会gc),然后会与from一起迁移...原创 2018-11-29 14:24:48 · 158 阅读 · 1 评论 -
Mysql的索引类型
MyISAM: 非聚集索引,B+TREE。 存储方式:生成3个文件,数据结构文件.frm,索引文件.MYI,数据文件MYD 通过B+TREE索引的叶子节点存储着实际数据的指针,指针指向MYD文件Innodb: 聚集索引,B+TREE。 存储方式:生成2个文件,数据结构文件.frm,索引数据文件.ibd 通过B+TREE索引的叶子节点存...原创 2019-05-23 22:26:27 · 119 阅读 · 1 评论 -
JAVA JVM内存模型
JMM内存模型JMM执行流程:从内存获取共享数据线程执行引擎通过use指令获取工作内存。线程工作内存通过load指令,到主内存。主内存通过read指令读取数据数据写入内存线程执行引擎通过assign指令往工作内存写入。线程工作内存通过store指令,到主内存。主内存通过write指令写入数据数据是怎么做同步主要是在线程工作内存与主内存这2块之间做同步操作...原创 2019-07-22 17:32:05 · 79 阅读 · 0 评论 -
JAVA JVM 垃圾收集器
垃圾收集算法标记清除法复制法标记整理法分代收集法缺点标记清除法:原理: 从根开始扫描,标记所有的存活对象(可达对象),然后对所有未标记的对象进行清除操作。缺点: 清除后会产生不连续内存,内存碎片,导致资源浪费。复制法:原理: 把一块区域切分成2份,从s1把所有存活对象进行复制到s2区域,然后把s1的清除。缺点: 资源分为2块,运行时只使用一份区域,另一个区域空闲,导...原创 2019-07-22 18:03:20 · 93 阅读 · 0 评论 -
JAVA JVM类加载器
类加载器启动类加载器 bootstrap classloader,加载rt.jar扩展类加载器 extend classloader,加载lib/ext应用类加载器 app classloader,加载classpath自定义类加载器,加载自定义路径类加载时检查是否存在顺序自定义类加载器应用类加载器扩展类加载器启动类加载器类加载到内存时顺序启动类加载器扩展类加载器...原创 2019-07-22 18:15:03 · 101 阅读 · 0 评论 -
synchronzied 原理
synchronzied使用1. 代码块:锁括号对象2. 普通方法:锁当前调用对象3. 静态方法:锁当前class对象源码解析1. 代码块上通过javap反编译出来可看到monitorenter和monitorexit对称使用来完成同步。monitorenter主要判断锁对象对应的monitor计数是否=0,如果是则这个对象对应的monitor计数+1,获取锁成功,否则阻塞。mo...原创 2019-08-25 20:20:15 · 152 阅读 · 0 评论 -
ReentrantLock原理
ReentrantLock原理ReentrantLock底层其实实现了AQS的一个同步器AQS架构AQS通过一个state和一个FIFO的队列来实现。这个FIFO的是由Node实现AQS分为2种模式锁:共享锁与独占锁。共享锁实现AQS的tryAcquireShared-tryReleaseShared方法独占锁实现AQS的tryAcquire-tryRelease方法AQS ac...原创 2019-08-25 22:32:10 · 139 阅读 · 0 评论