为什么要分代 ?? ?分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。 ? ?? ?在Java程序运行的过程中,会产...
分类:
其他好文 时间:
2014-12-19 19:26:47
阅读次数:
195
在前几篇将Java内存模型的那些事基本上把这个域底层的概念都解释清楚了,聊聊高并发(三十五)Java内存模型那些事(三)理解内存屏障 这篇分析了在X86平台下,volatile,synchronized, CAS操作都是基于Lock前缀的汇编指令来实现的,关于Lock指令有两个要点:
1. lock会锁总线,总线是互斥的,所以lock后面的写操作会写入缓存和内存,可以理解为在lock后面的写缓存...
分类:
移动开发 时间:
2014-12-19 13:08:25
阅读次数:
307
在聊聊高并发(三十三)从一致性(Consistency)的角度理解Java内存模型 我们说了硬件层提供了满足某些一致性需求的能力,Java内存模型利用了硬件层提供的能力指定了一系列的语法和规则,让Java开发者可以隔绝这种底层的实现专注于并发逻辑的开发。这篇我们来看看硬件层是如何提供这些实现一致性需求的能力的。
硬件层提供了一系列的内存屏障 memory barrier / memory...
分类:
其他好文 时间:
2014-12-18 16:59:45
阅读次数:
1682
在一台电脑上的内存存储区域分为6种:1.寄存器: 寄存器是运行最快的,寄存器在系统中早就已经存在了,寄存器的数量是有限的,被严格要求 Java程序员不能显示的调用寄存器2.栈: 栈中存储着基本数据类型的变量以及引用变量 栈中元素在超出其生命周期后会自动销毁 栈中元素一经创建,系统会为其分配...
分类:
编程语言 时间:
2014-12-17 22:27:51
阅读次数:
180
Java内存模型是围绕着并发过程中如何处理原子性、可见性、有序性这三个特征来建立的,下面是这三个特性的实现原理:
1.原子性(Atomicity)
由Java内存模型来直接保证的原子性变量操作包括read、load、use、assign、store和write六个,大致可以认为基础数据类型的访问和读写是具备原子性的。如果应用场景需要一个更大范围的原子性保证,Java内存模型还提供了loc...
分类:
编程语言 时间:
2014-12-17 00:23:19
阅读次数:
236
本文由?ImportNew?-?进林?翻译自?journaldev。欢迎加入翻译小组。转载请参见文章末尾的要求。 要了解Java垃圾收集机制,先理解JVM内存模式是非常重要的。今天我们将会了解JVM内存的各个部分、如何监控以及垃...
分类:
编程语言 时间:
2014-12-16 15:25:22
阅读次数:
205
要了解Java垃圾收集机制,先理解JVM内存模式是非常重要的。今天我们将会了解JVM内存的各个部分、如何监控以及垃圾收集调优。Java(JVM)内存模型正如你从上面的图片看到的,JVM内存被分成多个独立的部分。广泛地说,JVM堆内存被分为两部分——年轻代(YoungGeneration)和老年代(O...
分类:
编程语言 时间:
2014-12-16 11:18:34
阅读次数:
308
主内存与工作内存
Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量值这样的底层细节。此处的变量(Variable)与Java编译中所说的变量略有区别,它包括了实例字段,静态字段和构成数组对象的元素,但是不包括局部变量与方法参数,因为后者是线程私有的,不会被共享,自然就不存在竞争的问题。了为获得比较好的执行效率,Java内存模型并没有限...
分类:
编程语言 时间:
2014-12-15 21:50:01
阅读次数:
209
Shallow Heap和Retained Heap这两个名词在Java内存分析时经常遇到。本博文是Eclipse Memory Analyzer中关于Shallow Heap和Retained Heap帮助文档的翻译。 Shallow Heap是被一个对象消费的内存。Retained Heap是指X的Retained Set中所有对象的Shallow Size和。...
分类:
其他好文 时间:
2014-12-15 09:06:52
阅读次数:
249
Java内存管理的9个小技巧很多人都说“Java完了,只等着衰亡吧!”,为什么呢?最简单的的例子就是Java做的系统时非常占内存!一听到这样的话,一定会有不少人站出来为Java辩护,并举出一堆的性能测试报告来证明这一点。其实从理论上来讲Java做的系统并不比其他语言开发出来的系统更占用内存,那么为什...
分类:
编程语言 时间:
2014-12-14 09:28:04
阅读次数:
259