volatile和synchronized特点 首先需要理解线程安全的两个方面:执行控制和内存可见。 执行控制的目的是控制代码执行(顺序)及是否可以并发执行。 内存可见控制的是线程执行结果在内存中对其它线程的可见性。根据Java内存模型的实现,线程在具体执行时,会先拷贝主存数据到线程本地(CPU缓存 ...
分类:
其他好文 时间:
2019-02-21 16:12:53
阅读次数:
136
转: http://www.hollischuang.com/archives/489 阿里大牛珍藏架构资料,点击链接免费获取 针对本文,博主最近在写《成神之路系列文章》 ,分章分节介绍所有知识点。欢迎关注。 一、基础篇 JVM JVM内存结构 堆、栈、方法区、直接内存、堆和栈区别 Java内存模型 ...
分类:
编程语言 时间:
2019-02-21 12:53:09
阅读次数:
176
Java虚拟机在执行Java程序的过程中会把它所管理的内存化分为若干个不同的数据域。如下图所示,主要包括程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区。 1.1 程序计数器 程序计数器(Program Counter Register)是一块较小的内存空间,可以当成单签线程所执行的资码 ...
分类:
编程语言 时间:
2019-02-18 23:04:44
阅读次数:
221
颠倒给定的 32 位无符号整数的二进制位。 示例 1: 示例 2: 提示: 请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。 在 Java 中,编 ...
分类:
其他好文 时间:
2019-02-18 01:04:51
阅读次数:
264
4884: 螺旋矩阵 时间限制(普通/Java):1000MS/3000MS 内存限制:65536KByte 描述 一个 n 行 n 列的螺旋矩阵可由如下方法生成: 从矩阵的左上角(第 1 行第 1 列)出发,初始时向右移动;如果前方是未曾经过的格子, 则继续前进,否则右转;重复上述操作直至经过矩阵 ...
分类:
其他好文 时间:
2019-02-17 10:43:48
阅读次数:
177
前言当JAVA程序遇到OutOfMemory,或者遇到内存占用升高的情况时,可以使用jmap生成堆dump文件,看是否有内存泄露。下边是具体步骤。生成堆转储信息生成dump文件有两种方式,一种是在出现错误时,自动dump堆信息,另外一种是使用命令行生成。推荐自动生成的方式,因为在程序挂掉后,堆信息就不存在了,线程被破坏自动生成通过一些JVM参数让虚拟机在内存溢出时自动dump出快照文件参数说明-X
分类:
编程语言 时间:
2019-02-14 22:30:11
阅读次数:
214
参考https://www.cnblogs.com/zhengbin/p/5654805.html 阅读目录 一、基本概念 二、Volatile原理 一、基本概念 先补充一下概念:Java 内存模型中的可见性、原子性和有序性。 可见性: 可见性是一种复杂的属性,因为可见性中的错误总是会违背我们的直觉 ...
分类:
编程语言 时间:
2019-02-14 11:45:20
阅读次数:
148
六、java内存模型 1.线程独占部分 (1)程序计数器 (2)Java虚拟机栈 (3)本地方法栈 (4)递归为什么会引发java.lang.StackOverFlowError异常吗 2.线程共享部分 (1)MetaSpace和PermGen本质区别 (2)java堆 ...
分类:
编程语言 时间:
2019-02-12 22:04:25
阅读次数:
177
七、JVM面试小知识 1.JVM三大性能调优参数 -Xms -Xmx -Xss 的含义 2.java内存模型中堆和栈的区别 3.不同JDK版本中的intern()方法的区别 ...
分类:
其他好文 时间:
2019-02-12 21:50:17
阅读次数:
187
目录 1.什么是JMM 2.JMM的主内存和工作内存 3.JMM如何解决可见性问题-指令重排序 4.Volatile 十、JMM(Java内存模型)(暂时没有理解) 1.什么是JMM 2.JMM的主内存和工作内存 (1)主内存 (2)工作内存 (3)主内存和工作内存数据存储类型以及操作方式归纳 (4 ...
分类:
编程语言 时间:
2019-02-11 20:00:02
阅读次数:
213