一,java内存模型
由于java1.8对java内存模型进行了改动,我们这里分开来说明,首先来看java1.8之前的java内存模型。
1,java1.8之前的内存模型
关于java内存模型,有一点,要提一下,那就是,线程之间的通信机制。也就是说:线程之间是如何通信的?
答:共享内存和消息传递。
共享内存通信,指的是各线程之间通过共享内存这一块区域,来进行隐式通信。线程之间通过读写共享内存来进行通信。在java中,典型的应用就是通过共享对象来进行通信。这里要搞清楚2个概念,共享内存和本地内存。共享内存是各线程共享的公共区域。本地内存是线程独享的,其他线程不能访问。
消息传递通信,指的是线程之间必须通过明确的发送消息来进行显示通信。这种通信方式,线程之间没有共享对象,而是通过wait()、notify()等方法,显式的告诉其他线程来进行通信。
架构图汇总2,java1.8的内存模型
java1. 8移出了内存模型中的方法区,引入了元空间的概念。元空间使用的是操作系统的内存,而不是jvm内存。指定元空间的大小,通过下面这个jvm参数:
-XX:MetaspaceSize
还有一个关键点,就是常量池。在java1.7之前,常量池位于方法区。从java1.7开始,常量池位于堆中。
二,java对象的结构
java对象的结构
架构图汇总对象头的结构
架构图汇总Mark Word
架构图汇总三,双亲委派模型
什么是双亲委派模型?
为什么叫双亲委派模型?
双亲指的是谁?
架构图汇总四,类的生命周期
java类的生命周期:加载->连接->初始化->使用->卸载。
如下图:
架构图汇总五,Eureka架构图
这个架构图是结合源码画出的,个人觉得还是很不错的。
架构图汇总六,Kafka架构图
注意:只有broker和consumer需要向Zookeeper集群注册。生产者无需注册到Zookeeper。
架构图汇总七,Spring Cloud微服务架构图
架构图汇总
网友评论