代码改变世界

随笔分类 -  Hash

ArrayList和LinkedList和Vector的区别

2018-08-16 10:12 by 摘花, 175 阅读, 收藏,
摘要: ArrayList:内部数据结构是数组,查询速度快,插入,删除速度慢 LinkedList:内部是链表,适合插入删除,无下标,查询慢。 Vector:线程安全的数组,所以比ArrayList性能差一些。 阅读全文

transient、instanceof、volatile、synchronized、const 原理及用法。

2018-08-16 10:04 by 摘花, 857 阅读, 收藏,
摘要: transient:修饰变量,在实现Serializable接口的类中,可以避免持久化,但是如果实现的是Externalizable接口,那么手动序列化会无视 transient。 instanceof:对象 instanceof 类,检查对象是否是这个类或者这个类的子类的对象,返回布尔值。 vol 阅读全文

Java中的GC

2018-08-15 10:16 by 摘花, 219 阅读, 收藏,
摘要: 在梳理之前,要清晰的三个目标: 1,什么对象需要回收? 2,什么时候回收? 3,怎么回收? 问题1,当然是这个对象再也用不上的时候啦!就像从邻居家借了一把锄头,活没干完之前就还回去岂不是很傻,因为要用的时候又要去借。那怎么知道活有没有干完呢? 一,引用计数器,每当一个地方引用此对象,就给计数器加一, 阅读全文

内存可见性、重排序、顺序一致性

2018-08-14 16:56 by 摘花, 370 阅读, 收藏,
摘要: 重排序:CPU可能为了提高程序执行的效率和更充分的运用计算单元,会将代码的执行顺序打乱,重新排序,而volatile会禁止指令重排序。 可见性:当某一线程修改了某个变量的值,其他线程应该立即得知这次修改(将工作内存的值同步回主存),可以通过volatile关键字实现。 原子性:指的是代码要嘛全部都r 阅读全文

堆、栈、方法区、直接内存

2018-08-14 11:30 by 摘花, 505 阅读, 收藏,
摘要: 堆(heap):FIFO,所有线程共享的一块内存,是专门存放对象实例的地方,GC发生在这里。随JVM启动而创建 栈(stack):LIFO,应该叫做虚拟机栈,每个线程私有的,存放该线程调用的方法栈帧,存储局部变量表、操作数栈、程序出口、动态链接等,每一个方法的调用就是入栈出栈的过程。 方法区(non 阅读全文