java
h525483481
这个作者很懒,什么都没留下…
展开
-
内存溢出和内存泄露的区别
一、概念及区别:1、内存泄漏:是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。2、内存溢出指程序申请内存时,没有足够的内存供申请者使用。注意,定位虚拟机内存问题的时候,第一步就是要判断到底是内存溢出还是内存泄露,前者好判断,跟踪堆栈信息就可以了;后者比较复杂一点,一般都是老年代中的大对象没释放掉,要通过各种办法找出老年代中的大对象...原创 2018-03-05 11:52:33 · 567 阅读 · 0 评论 -
JVM判断java对象存活
Java虚拟机中GC回收主要针对的是堆中的对象,对象在回收前应该判断是否需要回收。判断方法主要是两种:引用计数算法和可达性分析算法。java虚拟机采用的是可达性分析算法。引用计数算法算法原理:给对象添加一个引用计数器,每有一个地方引用它时,计数器值就加1。当引用失效时,计数器值就减1,任何时候计数器值为0的对象就是不在被使用的对象。 优缺点:实现简单、判定效率很高但是不能解决对象之间相互循环引用的...转载 2018-03-05 14:29:19 · 159 阅读 · 0 评论 -
Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析
原文出处: JavaDoop今天发一篇”水文”,可能很多读者都会表示不理解,不过我想把它作为并发序列文章中不可缺少的一块来介绍。本来以为花不了多少时间的,不过最终还是投入了挺多时间来完成这篇文章的。网上关于 HashMap 和 ConcurrentHashMap 的文章确实不少,不过缺斤少两的文章比较多,所以才想自己也写一篇,把细节说清楚说透,尤其像 Java8 中的 ConcurrentHash...转载 2018-04-09 18:34:43 · 160 阅读 · 0 评论 -
常用设计模式
设计模式六大原则:开闭原则 面向对象设计/编程 终极目标(实现开闭原则) 一个是对于拓展是开放的,另一个是对于修改是关闭的 尽量不要修改已有代码 单一职责 不要让一个类承担过多的职责 里氏替换 继承父类后,尽量不要重写父类的方法。 依赖倒转 通过抽象或者接口来实现类与类之间的依赖关系。接口隔离 建立单一接口,不要建立庞大/臃肿的接口 迪米特法则 一个实体尽可能少的与另一个实体发生接触(依赖), 只...原创 2018-04-02 19:22:35 · 116 阅读 · 0 评论 -
《OD面试》Java面试题整理
转载地址:https://www.cnblogs.com/yeahwell/p/6422218.html?utm_source=itdadao&utm_medium=referral一、面试考察点1 主语言本身2 数据库3 算法4 Spring/SpringMVC/MyBatis5 项目经验1)项目涉及到的技术点深挖:(1)考察候选人技术深度 (2)看候选人遇到问题总结学习及解决能力(3)...转载 2018-03-28 19:36:22 · 1638 阅读 · 0 评论 -
为什么ConcurrentHashMap是弱一致的
为什么ConcurrentHashMap是弱一致的本文将用到Java内存模型的happens-before偏序关系(下文将简称为hb)以及ConcurrentHashMap的底层模型相关的知识。happens-before相关内容参见:JLS §17.4.5. Happens-before Order、深入理解Java内存模型以及Happens before;ConcurrentHashMap的详...转载 2018-04-18 18:44:22 · 249 阅读 · 0 评论 -
实现一个简单的阻塞队列
import java.util.LinkedList;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * Created by Lenovo on 2018/5/1...原创 2018-05-17 11:36:31 · 7915 阅读 · 4 评论