一、jvm内存模型 JVM 内存模型主要分为堆、程序计数器、方法区、虚拟机栈和本地方法栈 1、堆 1.1、堆是 JVM 内存中最大的一块内存空间。 1.2、该内存被所有线程共享,几乎所有对象和数组都被分配到了堆内存中。 1.3、堆被划分为新生代和老年代,新生代又被进一步划分为 Eden 和 Surv ...
分类:
编程语言 时间:
2019-10-31 01:18:47
阅读次数:
120
JVM运行时内存结构 JVM内存模型 JVM运行时内存=共享内存区+线程内存区 共享内存区 共享内存区=持久代+堆 持久代=方法区+其他 堆=Old Space+Young Space Young Space=Eden+S0+S1 持久代 JVM用持久代(Permanent Space)实现方法区, ...
分类:
其他好文 时间:
2019-10-30 00:11:05
阅读次数:
107
直接看代码 输出结果 读线程无法感知 INIT_VALUE的变化 原因是因为JVM内存模型 CPU会将内存中的数据存入Cache中,写线程只对“自己”的Cache做修改操作,而读线程无法感知 现代操作系统对这种问题的解决方案大致可以分为以下两种: 1.数据总线加锁 缺点就是多核CPU串行化运行,效率 ...
分类:
其他好文 时间:
2019-10-26 23:26:44
阅读次数:
166
下文连接比较多啊,都是我过整理的博客,很多答案都在博客里有详细说明,理解记忆是最扎实的记忆。而且我的答案不一定是最准确的,但是我的答案不会让你失望,而且几乎每个答案都是问题的扩展答案。 1.JVM内存模型 答:https://www.cnblogs.com/cxiaocai/p/11483629.h ...
分类:
编程语言 时间:
2019-10-09 09:30:33
阅读次数:
82
先上个图 这是根据《Java虚拟机规范(第二版)》所画的jvm内存模型。 + 程序计数器:程序计数器是用来记录当前线程方法执行顺序的,对应的就是我们编程中一行行代码的执行顺序,如分支,跳转,循环,异常处理等。所以在多线程下,程序计数器必然是线程隔离的,每个线程都有自己独立的程序计数器。注意,Java ...
分类:
其他好文 时间:
2019-09-23 22:14:47
阅读次数:
117
一、基础 集合类,并发包,IO/NIO,JVM,内存模型,泛型,异常,反射,等有深入了解,最好是看过源码了解底层的设计。 二、需要全面的互联网主流技术相关知识 深入了解mysql,redis,mongodb,nginx,tomcat,rpc,jms等方面的知识。你要问需要了解到什么程度,我可以给你说 ...
分类:
编程语言 时间:
2019-09-09 14:49:47
阅读次数:
119
javac : 编译代码(即将.java文件编译成.class的中立字节码文件) eg:javac App.java javap是jdk自带的反解析工具。它的作用就是根据class字节码文件,反解析出当前类对应的code区(汇编指令)、本地变量表、异常表和代码行偏移量映射表、常量池等等信息。 jav ...
分类:
其他好文 时间:
2019-09-08 09:41:21
阅读次数:
86
基础 1、JVM内存模型和JAVA内存模型JMM 2、Jvm垃圾回收机制 3、Java多线程、线程池及并发包 4、Java锁 5、Java集合 6、Java BIO、NIO 7、Spring源码解析; 8、SpringBoot 存储相关: 1、MySQL 2、Redis 3、MQ 架构相关: 1、分 ...
分类:
编程语言 时间:
2019-09-08 09:33:44
阅读次数:
98
一、JVM内存模型 1.JVM运行时数据区 二、Java内存模型(JMM) 1.JMM 三、Java对象模型 1.Java对象在JVM中的存储模型称之为Java对象模型。 四、总结 1.JVM内存模型,和Java虚拟机的运行时区域有关。 2.Java内存模型,和Java的并发编程有关。 3.Java ...
分类:
编程语言 时间:
2019-09-07 00:31:36
阅读次数:
97
前言:生产服务器内存使用过高预警,为了解决预警,重启了服务器;之后做总结; 事件过程:收到报警之后,查看日志信息,判断和前段时间的业务量并没有什么大的变化;又查看了下内存的使用情况,发现在一点点的上升;后续查看启动参数时,对于启动参数的配置,有一些疑义; 因此,对JVM内存模型与JVM参数配置进行一 ...
分类:
其他好文 时间:
2019-08-31 16:56:11
阅读次数:
80