- 博客(17)
- 资源 (6)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 JVM 多线程高并发--synchroized
1.synchroized 基本用法1.1语义 原子性:确保线程互斥的访问同步代码 可见性:保证共享变量的修改能够即时可见,其实通过对Java内存模型中“对一个变量unlock操作之前,必须同步到主内存中;如果对一个变量进行lock操作,则将会清空工作内存中此变量的值,在执行引擎使用此变量前,需要重新从主内存中load操作或者assign操作初始化变量值”来保证。 有序性:有效的解决重排问题,即“一个unlock操作先行发生(happen-before)于后面对同一个锁的loc
2020-05-28 23:10:54
889
2
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 JVM-- Happens-before(先行发生原则)
happens-before的定义先行发生是Java内存模型中定义的两项操作数之间饿的偏序关旭,如果操作A先行发生于操作B,其实就是在发生操作B之前,操作A产生的影响能被操作B观察到,“影响”包括修改了内存中共享变量的值、发送了消息、调用了方法等。 先行发生是判断是否存在竞争、线程是否安全的主要依据,依据这个原则,我们可以通过几条规则一揽子解决并发环境下两个操作之间是否可能存在冲突的所有问题。特性程序顺序性规则一个线程中的每个操作,happens-before于该线程中的任意后续操作。简单来
2020-05-28 22:42:41
571
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 JVM--Java对象内存布局
1.Java对象内存布局在JVM中,对象在内存中的布局分为三块区域:对象头、实例数据、对其数据。如下图所示: 长度 内容 说明 32/64 bit Mark Word 存储对象的HashCode或者锁信息等 32/64bit Class Metadata Address 存储对象类型数据的指针 32/
2020-05-28 22:36:49
765
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 JVM -Java内存模型以及内存屏障深入解读(Java merory model)
1.Java内存模型1.1主内存与工作内存java内存模型的主要目的是定义程序中各种变量的访问规则,即关注在虚拟机中把变量存储到内存和从内存中取出变量值这样的底层细节。此处的变量(Variables)与Java编程中所说的变量有所区别,它包括了实例字段、静态字段和构成数组对象的元素,但是不包括局部变量与方法参数,因为后者是线程私有的不会被共享,自然就不会存在竞争问题。主内存(Main memory):此处的主内存与物理硬件得主内存名字一样,两者也可以互相类比,但此处仅是虚拟机内存得一部分。
2020-05-17 14:47:03
307
10
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 OopMap 和 RememberedSet
OopMap 用于枚举 GC Roots,记录栈中引用数据类型的位置。记录栈上本地变量到堆上对象的引用关系。其作用时,垃圾收集时,收集线程会堆栈上的内存进行扫描,看看哪些位置存储了Reference类型。如果风险某个位置确实存的时Reference类型,就以为着它锁引用的对象这一次不能被回收。问题,栈上的本地变量表里面只有一部分数据时Reference类型的,那些非Reference类型的数据...
2020-04-13 10:07:07
724
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Card Table 卡表
因何而生现代JVM,堆空间通常被划分为新生代和老年代。由于新生代的垃圾收集通常很频繁,如果老年代对象引用了新生代的对象,那么,需要跟踪从老年代到新生代的所有引用,从而避免每次YGC时扫描整个老年代,减少开销。对于HotSpot JVM,使用了卡标记(Card Marking)技术来解决老年代到新生代的引用问题。具体是,使用卡表(Card Table)和写屏障(Write Barrier)来...
2020-04-13 09:51:19
1291
2
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Java JVM 内存分配与回收策略
对象的内存分配,往大的方向讲。就是在堆上分配(但也可能经过JIT编译后被拆散为标量类型饼间接栈上分配),对象主要分配在新生代的Eden 区上,如果启动 本地线程分配缓冲(TLAB),将按照线程有限在TLAB上分配。在少数情况下也可能直接分配在老年代中,分配规则并不是百分比固定,其细节取决于当前使用的是哪一种垃圾收集器组合,还有虚拟机中与内存相关得参数设置。新生代GC和老年代GC区别新生态代...
2020-04-03 19:12:39
151
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 List remove ConcurrentModificationException问题分析
Exception in thread "main" java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909) at java.util.ArrayList$Itr.next(ArrayList.java:859) at co...
2020-03-10 22:30:13
597
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Jstorm安装与集群环境搭建(storm集群配置类似)
上篇文章介绍了zookeeper集群环境的搭建传送门,接下来这篇文章主要介绍jstorm安装与集群环境的配置以及jstorm ui配置。 jstorm最新版本为2.2.1 下载地址传送门。本文将采用192.168.72.140,141,142作为zookeeper集群服务器,192.168.72.151,152,153作为jstorm集群服务器,其中143作为master,UI服务器,接
2017-11-11 21:12:28
765
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 zookeeper安装与集群配置
本文重点是介绍zookeeper安装与集群配置相关问题,对于尚未接触过或者初学者的小伙伴来说按照本文顺序执完成集群搭建应该没有问题。
2017-11-11 15:44:29
444
转载 Java学习推荐书目
一、基础类1、《Thinkinginjava》,入门第一位是建立正确的概念。2、《CoreJava》,我没系统读过,这本书更贴近实践,更多API的介绍,同样,更新也更频繁。二、进阶类1、《EffectiveJava》,在熟悉语法、API之后,你需要知道最佳实践和陷阱,没有比这本更好的。2、《JavaPuzzlers》,通过谜题介绍一些你可能没有注意到的边角料,作为趣味读物也不错3、《深入Java虚拟机》,翻译一般,但不可不读,最好结合最新的JVM规范来读。三、特定领域1、网络编程...
2021-08-23 19:26:09
270
原创 程序员小灰文章梳理
漫画:什么是ConcurrentHashMap?漫画:高并发下的HashMap漫画:什么是HashMap?漫画:什么是红黑树?什么是AES算法?(整合版)漫画:什么是SHA系列算法?漫画:什么是MD5算法?漫画:如何破解MD5算法?漫画:什么是Base64算法?什么是A*寻路算法?漫画:什么是布隆算法?漫画:Bitmap算法 整合版漫画:什么是B-树?漫画:什么是B+树?漫画:什么是一致性哈希?漫画算法:如何判断链表有环?漫画算法:辗转相除法是
2021-08-11 18:12:07
133
绝对实用的JSP+Servlet+Bean真假分页详解
2014-08-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人