内存模型 一、java 内存模型 【java 内存模型】是 Java Memory Model(JMM) 简单的说,JMM 定义了一套在多线程读写共享数据时(成员变量、数组)时,对数据的可见性、有序 性、和原子性的规则和保障 1)原子性 ...
JVM的类加载阶段
一、类加载阶段 一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将会经历加载 (Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization...
JVM在编译期的处理
编译期处理(语法糖) 所谓的语法糖 ,其实就是指 java 编译器把 .java 源码编译为 .class 字节码的过程中,自动生成 和转换的一些代码,主要是为了减轻程序员的负担。大多数是在 jdk5 及 jdk7 做的处理。 1)默认...
JVM的字节码技术
三、字节码技术 1、类文件结构 一个简单的 HelloWorld.java package com.mysite.jvm.t5; // HelloWorld 示例 public class HelloWorld { public static void main(String[] args) { System.out.prin...
JVM-垃圾回收
三、垃圾回收 1、如何判断对象可以回收 1)引用计数法 定义: 在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能再被使...
JVM-内存结构
一. 前言 1、什么是 JVM? 1)定义: Java Virtual Machine - java 程序的运行环境(java 二进制字节码的运行环境) 2)好处: 一次编写,到处运行 自动内存管理,垃圾回收功能 数组下标越界检查 多态 3)比较:...
Redis中的缓存雪崩
缓存雪崩 🤔现象分析 缓存雪崩是指在同一时段大量的缓存key同时失效或者缓存服务(Redis等)宕机,导致大量请求到达数据库,带来巨大压力。 👊 解决方案 利用Redis集群提高服务的可用性,避免缓存服务宕机 给缓存业...
Redis中的缓存击穿
缓存击穿 缓存击穿问题也叫热点key问题,就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了,无数的请求访问会在瞬间给数据库带来巨大压力。 🤔现象分析: 当线程1查询缓存时,未命中,于是从数据库中查...
Redis中的缓存穿透
缓存穿透 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,导致这些请求直接到了数据库上,对数据库造成了巨大的压力,可能造成数据库宕机。 解决方案 1)缓存无效 key 如果缓存和数据库中都查不到某...
elasticsearch和mysql数据库的数据同步问题(二)
使用 RabbitMq 异步通知的方式,解决数据同步问题。 消息的提供者和消费者导入相关的依赖和配置文件 <!--amqp--> <dependency> <groupId>org.springframework.boot</groupId> ...