- 博客(9)
- 收藏
- 关注
原创 java8的常用新特性
改动 hashmap的存储方式 java8在hashmap的链表长度达到8时,就会自动转换为红黑树进行存储。 可以参考一下这个HashMap与HashTable与并发容器。 接口中可以有非抽象的方法 接口中可以有两种有方法体的方法 1.static修饰的方法 接口被继承时,static修饰的有方法体的方法不会被继承 接口被实现时,static修饰的有方法体...
2018-09-10 18:22:41
488
原创 java多线程基础
线程状态的转换 wait()和sleep()方法的区别与相似之处: wait和sleep都可以使线程进入阻塞状态。 wait和sleep都是可中断方法,被中断后会收到中断异常。 wait是Object的方法,sleep是Thread特有的方法。 wait方法的执行需要在同步方法中,sleep则不需要。 在同步方法中执行wait方法会释放monitor锁,而sleep不会。 wait方法有...
2018-08-24 18:04:14
231
原创 HashMap与HashTable与并发容器
HashMap与HashTable 先上图看看它们的结构jdk7: 从图中可以看出HashMap和HashTable的组成结构基本一致,但是有些许不同。 相同点 capacity:数组的长度 loadFactor:负载因子(链表长度占数组长度的比例,默认0.75) threshold:扩容阈值(当链表长度到达阈值时就会自动扩容,等于capacity*loadFactor) 都是...
2018-08-23 13:19:41
616
原创 jvm高效并发与锁优化
主内存与工作内存 主内存:Java内存模型规定了所有的变量都存储在主内存。 工作内存:线程的工作内存中保存了被该线程使用到的变量的主内存副本拷贝,线程对变量的 所有操作(读取、赋值等)都必须在工作内存中进行,而不能直接读写主内存中的变量。不同的线程之间也无法直接访问对方工作内存中的变量,线程间变量值的传递均需要通过主内存来完成。 lock(锁定):作用于主内存的变量,它把一个变量标识...
2018-08-22 13:53:22
474
原创 jvm编译优化技术
Java程序员有一个共识,以编译方式执行本地代码比解释方式更快,之所以有这样的共识,除去虚拟机解释执行字节码时额外消耗时间的原因外外,还有一个很重要的原因就是虚拟机设计团队几乎把对代码的所有优化措施都集中在了即时编译器之中因此一般来说,即时编译器产生的本地代码会比Javac产生的字节码更加优秀。 优化技术概览 我们将继续查看如下的几项最有代表性的优化技术是如何运作的,它们分别是: 语言...
2018-08-21 14:36:46
1613
2
原创 jvm类加载机制
虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始 化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 类加载的时机 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initializati...
2018-08-21 13:34:28
143
原创 jvm关于垃圾
如何进行垃圾回收 挑选出垃圾 要进行垃圾回收,当然要知道什么是垃圾,比如说我…手上这支笔,用完了就成为了垃圾,jvm同样也需要将不会再使用的对象进行回收。 引用计数算法。 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的。 缺陷:当对象间存在相互引用时, ...
2018-08-20 15:07:35
162
原创 jvm关于对象
虚拟机对象探秘 对象的创建 虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。 对象的内存分配: Java堆中内存是绝对规整的,所有用过的内存都放在一边,空闲的内存放在另一边,中间放着一个指针作为分界点的指示器,那所分配内存就仅仅是把那个指...
2018-08-19 16:05:41
168
原创 jvm内存区域
运行时数据区域 Java虚拟机所管理的内存将会包括以下几个运行时数据区域 1. 程序计数器 程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令...
2018-08-19 00:44:59
148
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅