【JVM篇】判断对象是否可回收 文章目录判断对象是否可回收的算法如何判断一个对象到底是生存还是死亡:元空间:引用:判断对象是否可回收的算法1、引用计数算法: 优点: 实现简单;判定效率高。 原理: 给对象添加一个引用计数器,有一个地方引用,计数器值加1;引用失效,计数器值减1。计数器值为0的对象不能使用。 问题: 很难解决对象之间相互循环引用的问题。(两个相互引用的对象,但都和其他对象都没有引用) 因为它们相互引用着对方,它们的引用计数都不为0,所以引用计数法无法回收它们。 2、可达性
【JVM篇】虚拟机对象的创建 文章目录创建对象:分配内存:两种分配方式:java堆是否规整:采用指针碰撞:采用空闲列表:需要考虑的问题:创建对象:虚拟机遇到一条字节码new指令时,先去检查这个指令的参数是否能在常量池中定位到一个类的符号引用;并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,必须先执行相应的类加载过程。类加载通过后,虚拟机将为新生对象分配内存。分配内存:两种分配方式:(1)指针碰撞: java堆中的内存绝对规整。 所有使用过的内存放在一边,所有未使用过的内存放在另一边;中间放一
【JVM篇】运行时数据区域 文章目录运行时数据区域:内存溢出和内存泄漏:运行时数据区域:1、程序计数器: 线程私有。 为了线程切换后,恢复到正确的执行位置。 不会出现OutOfMemoryError。2、虚拟机栈: 线程私有。 生命周期与线程相同。 服务于字节码文件。(.class文件) 会出现两种情况: 栈内存溢出StackOverFlowError: 发生于方法的无限递归调用。 内存溢出OutOfMemoryError: 程序在申请内存后,无法释放已申请的内存。3、本
【spring篇】对spring循环依赖的理解 文章目录spring循环依赖循环依赖的产生注入方式构造循环依赖解决思路构造循环依赖解决原理spring三级缓存哪三级缓存三级缓存都存放了哪些东西只有一级缓存只有二级缓存为什么需要三级缓存spring循环依赖循环依赖的产生(1) 在spring中,spring bean对象默认是一个单例对象。(2)bean的创建过程:创建、注入、初始化。(3)A对象中有个b属性,B对象中有个a属性。在创建A对象的时候,需要给b属性赋值;在创建B对象的时候,需要给a属性赋值。注入方式(1)set注入(sp
【volatile】volatile关键字的认识 volatile关键字的认识volatile关键字机器硬件CPUCPU Cache模型原因解决流程CPU缓存一致性问题问题复现:i++操作解决java内存模型并发编程的三个重要特性JMM如何保证三大特性原子性:可见性有序性volatile关键字的语义volatile的原理和实现机制可见性有序性volatile使用的场景volatile和synchronizedvolatile关键字只能修饰:类变量和实例变量。不能修饰:方法参数,局部变量,实例常量,类常量。机器硬件CPUCPU Cache模型
【redis】- 缓存击穿、缓存穿透、缓存雪崩 对缓存击穿、缓存穿透、缓存雪崩三者的区分缓存穿透概念后果解决方案方案一方案二缓存击穿概念后果解决方案缓存雪崩概念原因后果解决方案缓存穿透概念查询一个不存在的数据,缓存未查到之后就去数据库查询;查不到数据就不写入缓存,导致每次查询这个数据都会从数据库查。后果如果有些不怀好意的人,利用这个不存在的数据,频繁大量的访问你的数据库,产生大量的请求,极有可能导致你的数据库异常访问不了、数据库宕掉。解决方案方案一缓存空对象:缓存空对象导致的问题:1、空值做了缓存,意味着缓存层中存了更
【mysql】mysql索引简单小总结 索引:聚集索引,辅助索引。本质区别:叶子节点存放信息不一样。聚集索引叶子节点存档的是一整行的信息。辅助索引存放的是索引值信息。辅助索引查询的时候需要回表(覆盖索引的时候不需要回表)。哪些时候不走索引:(索引失效)模糊查询:%加在前面。or操作。in包含两个及以上(一个走索引)。order by 操作:排序的列同时也在where中。使用全表扫描比使用索引快。查询中没有用到联合索引的第一个字段。where条件:加not null。类型转换(需要查询的字段的类型为integer,但是whe
【Spring MVC篇】对SpringMVC的小了解1 1、常用注解(RequestParam、RequestMapping、RequestBody、PathVariable、RequestHeader、CookieValue、ModelAttribute、SessionAttributes)2、请求参数的绑定3、响应数据和结果视图4、SpringMVC的异常处理
【Spring MVC篇】SpringMVC入门小案例 1、创建WEB工程,引入开发的jar包2、配置核心的控制器3、编写springmvc.xml的配置文件4、编写index.jsp和HelloController控制器类5、在WEB-INF目录下创建pages文件夹,编写success.jsp的成功页面6、启动Tomcat服务器,进行测试7、入门案例的执行过程分析...