摘要:
为什么要使用线程池呢?因为创建线程和销毁线程的开销很大,如果来一个请求就要创建一个线程,处理完之后又要销毁,这样频繁的创建和销毁会消耗大量的系统资源。 java线程池的原理:创建一个ThreadPool,核心线程数为m,最大线程数为n,还有一个阻塞队列BlockingQueue。当来一个请求的时候, 阅读全文
摘要:
由于计算机的内存与处理器的运算能力之间有几个数量级的差距,所以现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存(cache)来作为内存与处理器之间的缓冲:将运算需要使用到的数据从主内存复制到高速缓存中,让运算能快速进行,当运算结束后再从缓存同步回内存之中。 基于高速缓存的存储 阅读全文
摘要:
JVM内存结构: 1.java虚拟机栈:存放的是对象的引用(指针)和局部变量 2.程序计数器:每个线程都有一个程序计数器,跟踪代码运行到哪个位置了 3.堆:对象、数组 4.方法区:字节流(字节码文件)所代表的静态存储结构转换为方法区的运行时数据结构 5.常量池:String(字符串常量) JVM的类 阅读全文
摘要:
在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给了JVM来处理。但是首先需要明确,什么样的对象才能当为垃圾: 1.引用计数法:如果某个引用(即指针)指向对象,那么说明该对象还存活着的,如果没有指针与之相关联,则可以认为是垃圾。 缺点,无法解决循环引用的问题。 public 阅读全文