引言 本文主要说明两个问题:JMM存在的意义是什么?JMM内部的工作原理是什么(重点讲一下并发编程模式下的数据访问一致性问题) 。 1.为什么要使用JMM? 当我们刚开始接触JAVA语言的时候,就会被告知JAVA程序是可以实现跨平台运行的(即同一份代码资源可运行在不同的硬件配置下,不同的操作系统下) ...
分类:
编程语言 时间:
2019-06-30 20:32:15
阅读次数:
574
JVM的组成 类加载器 (classloader) 执行引擎 (execution engine) 运行时数据区域 (runtime data area) 对于Java程序员来说,在虚拟机自动内存管理机制下,不再需要像C/C++程序开发程序员这样为内一个new 操作去写对应的delete/free操 ...
分类:
编程语言 时间:
2019-06-29 00:28:58
阅读次数:
127
目录 数据类型堆与栈Java对象的大小引用类型按照基本回收策略分按分区对待的方式分按系统线程分如何区分垃圾如何处理碎片如何解决同时存在的对象创建和对象回收问题为什么要分代如何分代什么情况下触发垃圾回收分代垃圾回收流程示意选择合适的垃圾收集算法小结回收器选择辅助信息常见配置汇总调优总结垃圾回收的瓶颈增 ...
分类:
其他好文 时间:
2019-06-28 21:10:23
阅读次数:
155
一、基础篇 JVM JVM内存结构 堆、栈、方法区、直接内存、堆和栈区别 Java内存模型 内存可见性、重排序、顺序一致性、volatile、锁、final 垃圾回收 内存分配策略、垃圾收集器(G1)、GC算法、GC参数、对象存活的判定 JVM参数及调优 Java对象模型 oop-klass、对象头 ...
分类:
编程语言 时间:
2019-06-28 21:04:23
阅读次数:
179
一、并发编程两个关键问题 线程之间如何通信及线程之间如何同步。java并发采用的是共享内存模型 一、并发编程两个关键问题 线程之间如何通信及线程之间如何同步。java并发采用的是共享内存模型 二、JMM内存模型 Java内存模型(即Java Memory Model,简称JMM)本身是一种抽象的概念 ...
分类:
编程语言 时间:
2019-06-27 00:32:55
阅读次数:
150
Java的一个重要优点就是通过垃圾收集器(Garbage Collection,GC)自动管理内存的回收,程序员不需要通过调用函数来释放内存。因此,很多程序员认为Java不存在内存泄漏问题,或者认为即使有内存泄漏也不是程序的责任,而是GC或JVM的问题。其实,这种想法是不正确的,因为Java也存在内 ...
分类:
编程语言 时间:
2019-06-25 13:28:12
阅读次数:
114
JVM的参数类型: 1、标配参数: 2、X参数: -Xmixed 混合模式 -Xint 解释执行 -Xcomp 第一次使用就编译成本地代码 XX参数: 如何查看JVM系统参数的默认值 ...
分类:
编程语言 时间:
2019-06-25 00:12:28
阅读次数:
147
在java内存模型中,happens before应该理解为:前一个操作的结果,可以被后续的操作获取,即内存可见性。 为了解决多线程的内存可见性问题,就提出了happens before原则,让线程之间遵守这些原则,同时对编译器的优化也进行了一定的约束 ...
分类:
移动开发 时间:
2019-06-24 12:34:02
阅读次数:
126
最近工作中又用到了volatile关键字,一直以来就是单纯的使用,也没有仔细看过相关内容,这次借机会详细的整理了下有关volatile的资料,记录在案以备查阅。 首先我们来看一个小例子: 这段代码是volatile关键字的典型应用场景之一,两个线程(主线程与thread 线程)通过共享一个变量进行信 ...
分类:
编程语言 时间:
2019-06-23 19:10:51
阅读次数:
93
Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文要讨论的 JVM内存结构 、 Java内存模型 和 Java对象模型 ,这就是三个截然不同的概念,但是很多人容易弄混。 首先,这三个概念是完全不同的三个概念。 ...
分类:
编程语言 时间:
2019-06-22 11:02:44
阅读次数:
121