- 博客(6)
- 收藏
- 关注
原创 java内存泄露
一,内存溢出和内存泄露1,内存溢出:你申请了10个字节的空间,但是你在这个空间写入11或以上字节的数据,出现溢出。2,内存泄漏:你用new申请了一块内存,后来很长时间都不再使用了(按理应该释放),但是因为一直被某个或某些实例所持有导致 GC 不能回收,也就是该被释放的对象没有释放。二,内存溢出java.lang.OutOfMemoryError,程序在申请内存时,没有足够的内存空间使用,出...
2019-11-13 14:47:09 498
原创 打破双亲委派机制
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 682
原创 GCROOT四种引用对象
GCROOT四种引用对象1,虚拟机栈中引用的对象(栈帧中的本地方法表)。2,方法区中(1.8称为元空间)的类静态属性引用的对象,一般指被static修饰的对象,加载类的时候就加载到内存中。3,方法区中的常量引用的对象。4,本地方法栈中的JNI(native方法)引用的对象。注意:即使可达性算法中不可达的对象,也不是一定要马上被回收,还有可能被抢救一下。网上例子很多,基本上和深入理解JVM...
2019-10-29 11:26:34 4722
原创 2021-01-14
前言本博文是基于某位大佬的公众号写的,仅仅作为学习总结,并不做商业用途。TPSTransactions Pre Second,每秒事务数,可以是一个接口,多个接口,一个业务等等。一个事务指的是事务内第一个请求发送到接受最后一个请求响应的过程。 以单接口为例每个事务包含3个过程。向服务器发请求服务器自己的内部处理服务器返回接口给客户端如果每秒能够完成N次这三个过程,tps就是N;QPSQueries Per Second 每秒查询率,是一台服务器每秒能够响应的查询次数(数据库中的每秒
2021-01-14 20:24:39 141
原创 线程池:业务代码最常用也最容易犯错的组件
线程池:业务代码最常用也最容易犯错的组件在程序中,我们会用各种池化技术来缓存创建昂贵的对象,比如线程池、连接池、内存池。一般是预先创建一些对象放入池中,使用的时候直接取出使用,用完归还以便复用,还会通过一定的策略调整池中缓存对象的数量,实现池的动态伸缩。由于线程的创建比较昂贵,随意、没有控制地创建大量线程会造成性能问题,因此短平快的任务一般考虑使用线程池来处理,而不是直接创建线程。今天,我们就针对线程池这个话题展开讨论,通过三个生产事故,来看看使用线程池应该注意些什么。线程池的声明需要手动进行Ja
2020-11-11 22:20:46 240
原创 Tomcat结构,类加载器流程,线程模型
tomcat类加载需要解决的问题tomcat是一个很经典的web服务器,一个服务器就相当于一个Java应用,而在这个Java应用中又有着多个被部署的Web应用,因此,有着如下的几个问题等着被解决:多个web应用之间不能相互影响;jsp能够热部署;web服务器本身使用的类库,不被干扰;多个web应用能够共享lib;tomcat的类加载结构简单粗暴,直接上图,以下为tomcat类加载...
2019-10-31 13:53:43 1983
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人