10 2017 档案
摘要:图片看不清楚,可以下载或在页面中单独查看图片 1. 概述 Garbage Collection, GC:1960年诞生于MIT的Lisp是第一门真正使用内存动态分配和垃圾收集器技术的语言。 程序计数器,虚拟机栈,本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行
阅读全文
摘要:1. 概述 对于Java程序员,在虚拟机自动内存管理机制的帮助下,不再需要为每个new操作去写配对的delete/free代码,不容易出现内存泄漏和内存溢出问题。 2. 运行时数据区域 Java虚拟机在执行Java程序的过程中会把它管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创
阅读全文
摘要:概述 为了解决内存与cpu之间的速度矛盾,在两者之前引入了写速度尽可能接近cpu运算速度的高速缓存:将运算需要使用到的数据复制到缓存中,让运算能快速进行,当运算结束后再从缓存同步回内存之中,这样处理就无须等待缓慢的内存读写了。 但是这也为计算机系统带来更高的复杂度,因为它引入了一个新的问题:缓存一致
阅读全文
摘要:引言 synchronized是Java线程同步中的一个重要的概念,synchronized是独占锁(互斥锁),同时也是可重入锁(可重入锁一定程度上避免了死锁的问题,内部是关联一个计数器,加一次锁计数器值加一,为零时释放锁),也是一种重量级锁。 synchronized是Java中的关键字,是一种同
阅读全文
摘要:引言 在Java中,可以通过配合调用Object对象的wait,notify和notifyAll来实现线程间的通信。 在线程中调用wait方法,将阻塞带带其他线程的通知(其他线程调用notify或notifyAll)。 在线程中调用notify或notifyAll将通知其他线程从wait方法处返回。
阅读全文
摘要:背景 由于使用stop方法停止线程非常暴力,可能会导致一系列问题。因此,提出一种温和的方式:请求另外一个先不要在执行了,这就是中断方式。 此外有这样的场景:编写 一个程序,需要暂停一段时间,于是调用Thread.sleep(),但是编译器或IDE报错说没有处理检查到的InterruptedExcep
阅读全文