了解一个框架你要这样想问题:如果是你要做一个springcloud一个微服务的框架,需要解决大量请求形成高并发的问题,你会这么做? 首先我们要想想单体架构中所带来的问题,所有的代码集中在同一个项目中。虽然便于管理,但是当项目足够庞大时,所有的业务模块都集中在一个JVM进程中,会面临很多问题: 1、项 ...
分类:
编程语言 时间:
2020-08-02 12:43:28
阅读次数:
98
写在前面上一篇文章并发Bug之源有三,请睁大眼睛看清它们谈到了可见性/原子性/有序性三个问题,这些问题通常违背我们的直觉和思考模式,也就导致了很多并发Bug为了解决CPU,内存,IO的短板,增加了缓存,但这导致了可见性问题编译器/处理器擅自优化(Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行),导致有序性问题初衷是好
分类:
移动开发 时间:
2020-08-02 10:22:41
阅读次数:
107
但凡问到JVM(Java虚拟机)通常有99%的概率一定会问,在JVM中如何判断一个对象的生死状态?判断对象的生死状态的算法有以下几个:1、引用计数器算法引用计算器判断对象是否存活的算法是这样的:给每一个对象设置一个引用计数器,每当有一个地方引用这个对象的时候,计数器就加1,与之相反,每当引用失效的时候就减1。优点:实现简单、性能高。缺点:增减处理频繁消耗cpu计算、计数器占用很多位浪费空间、最重要
分类:
其他好文 时间:
2020-08-02 10:15:42
阅读次数:
88
JVM(Java虚拟机)算是面试必问的问题的了,而但凡问JVM一定会问的第一个问题就是:讲一讲JVM的组成?那本文就注重讲一下JVM的组成。首先来说JVM的组成分为,整体组成部分和运行时数据区组成部分,一般开发者关注的和面试官问的都是后者,但本文会详细讲解以上两个组成部分。一、JVM整体组成JVM整体组成可分为以下四个部分:类加载器(ClassLoader)运行时数据区(RuntimeDataAr
分类:
其他好文 时间:
2020-08-02 10:15:02
阅读次数:
65
JVM史上最佳入门指南原创王磊的博客Java中文社群2019-04-05提到Java虚拟机(JVM),可能大部分人的第一印象是“难”,但当让我们真正走入“JVM世界”的时候,会发现其实问题并不像我们想象中的那么复杂。唯一真正令我们恐惧的,其实是恐惧本身。而作为整个JVM系列的首篇,本文将带你解除刚开始学习JVM时的种种疑惑。比如:什么是JVM?为什么学习JVM?怎么有效的学习JVM?带着以上的这些
分类:
其他好文 时间:
2020-08-02 10:14:48
阅读次数:
63
二刷周先生的《深入理解JVM》时,没想到已经出了第三版,拿着第二版的我在风中凌乱.... 第一次看这本书的时候是在19年的暑假前后,转眼即将到了20年的暑假,一年里,我也开始做了一些web开发上的工作,然而用到JVM的地方似乎仅仅限于开发环境和服务器的部署环境。这部分的知识偏理论,或者说,没有需要高 ...
分类:
其他好文 时间:
2020-07-31 14:07:23
阅读次数:
97
引言 重点讲讲普通的对象、数组对象以及class对象的创建过程。 对象通常由三个部分组成:对象头、实例数据喝对齐填充。 1. 普通对象创建过程 类加载 分配内存 初始化 设置对象头 执行init方法 1.1 类加载 JVM遇到new 关键字时,会去常量池中查看有无该类的符号引用,并检查其是否加载、解 ...
分类:
编程语言 时间:
2020-07-30 22:05:55
阅读次数:
73
在java语言中,除了基本数据类型以外,其他的引用都是各类对象的引用,根据生命周期的长短,分为以下四类: 强引用:我们new的对象所关联的引用就是强引用,当jvm内存空间不足时,宁肯抛出oom运行时错误,也不会将该引用回收来解决内存不足的问题。除非将其赋值为null或者超过引用的作用范围,该引用指向 ...
分类:
其他好文 时间:
2020-07-30 22:02:24
阅读次数:
74
单个实例 保证程序中只有一个实例 /* * 饿汉式 类加载到内存中,实例化一个单例,jvm保证线程安全 简单实用,推荐使用 Class.forName("") 唯一缺点: 不管用到与否,类装载时就完成实例化 (不用装载他干啥?) */ public class Mg01{ private stati ...
分类:
其他好文 时间:
2020-07-30 01:40:00
阅读次数:
59
说到Java内存区域,可能很多人第一反应是“堆栈”。首先堆栈不是一个概念,而是两个概念,堆和栈是两块不同的内存区域,简单理解的话,堆是用来存放对象而栈是用来执行程序的。其次,堆内存和栈内存的这种划分方式比较粗糙,这种划分方式只能说明大多数程序员最关注的、与对象内存分配关系最密切的内存区域是这两块,J ...
分类:
其他好文 时间:
2020-07-29 21:56:54
阅读次数:
76