java
_风声
当某天发现才华满足不了自己的野心时,那就安静的学习吧
展开
-
线程池:业务代码最常用也最容易犯错的组件
线程池:业务代码最常用也最容易犯错的组件 在程序中,我们会用各种池化技术来缓存创建昂贵的对象,比如线程池、连接池、内存池。一般是预先创建一些对象放入池中,使用的时候直接取出使用,用完归还以便复用,还会通过一定的策略调整池中缓存对象的数量,实现池的动态伸缩。 由于线程的创建比较昂贵,随意、没有控制地创建大量线程会造成性能问题,因此短平快的任务一般考虑使用线程池来处理,而不是直接创建线程。 今天,我们就针对线程池这个话题展开讨论,通过三个生产事故,来看看使用线程池应该注意些什么。 线程池的声明需要手动进行 Ja原创 2020-11-11 22:20:46 · 227 阅读 · 0 评论 -
java内存泄露
一,内存溢出和内存泄露 1,内存溢出:你申请了10个字节的空间,但是你在这个空间写入11或以上字节的数据,出现溢出。 2,内存泄漏:你用new申请了一块内存,后来很长时间都不再使用了(按理应该释放),但是因为一直被某个或某些实例所持有导致 GC 不能回收,也就是该被释放的对象没有释放。 二,内存溢出 java.lang.OutOfMemoryError,程序在申请内存时,没有足够的内存空间使用,出...原创 2019-11-13 14:47:09 · 477 阅读 · 0 评论 -
Tomcat结构,类加载器流程,线程模型
tomcat类加载需要解决的问题 tomcat是一个很经典的web服务器,一个服务器就相当于一个Java应用,而在这个Java应用中又有着多个被部署的Web应用,因此,有着如下的几个问题等着被解决: 多个web应用之间不能相互影响; jsp能够热部署; web服务器本身使用的类库,不被干扰; 多个web应用能够共享lib; tomcat的类加载结构 简单粗暴,直接上图,以下为tomcat类加载...原创 2019-10-31 13:53:43 · 1966 阅读 · 0 评论 -
打破双亲委派机制
java类加载器 1,Bootstrap Classloader:根类加载器,负责加载java的核心类(java.lang.*等),它不是java.lang.ClassLoader的子类,而是由JVM自身实现,c++实现,构造ExtClassLoader和APPClassLoader。 2,Extension ClassLoader:扩展类加载器,扩展类加载器的加载路径是JDK目录下jre/lib...原创 2019-10-29 15:30:26 · 661 阅读 · 0 评论