Java内存模型是保障多线程安全的根基,这里不过认识型的理解总结并未深入研究。一、什么是内存模型,为什么须要它Java内存模型(Java Memory Model)并发相关的安全公布,同步策略的规范、一致性等都来自于JMM。1 平台的内存模型在架构定义的内存模型中将告诉应用程序能够从内存系统中获得如...
分类:
编程语言 时间:
2014-11-04 17:13:49
阅读次数:
204
这篇的主题本应该放在最初的几篇,讨论的是并发编程最基础的几个核心概念,但是这几个概念又牵扯到很多的实际技术,比如Java内存模型,各种锁的实现,volatile的实现,原子变量等等,每一个都可以展开写很多,尤其是Java内存模型,网上已经能够有很几篇不错的文章,暂时不想重复造轮子,这里推荐几篇Jave内存模型的资料:
1.
JSR-133 FAQ
2. JSR-133 Cookbook
...
分类:
其他好文 时间:
2014-11-04 09:29:33
阅读次数:
221
上一篇说了虚拟机的内存模型,在说到堆内存的时候我们提到了,堆内存是Java内存中区域最大的一部分,而且垃圾回收器主要就是回收这部分的内容。那么这篇就来介绍一下垃圾回收器的原理以及回收的算法。Java中的垃圾回收器(GC)是Java中比较有特色的一点,不需要我们手动的去管理一个对象,不想C++中的构造函数和析构函数一样,需要程序猿自己去手动的管理,很容易造成内存泄露的问题。当然如果学过OC语言的话,...
分类:
编程语言 时间:
2014-11-02 18:16:12
阅读次数:
242
引言: JVM分析和优化是Java技术体系中的高大上的内容,其实这个东西没有那么神秘和高深,只是大部分童鞋没有机会真正接触它们,从而对它们有一个深入理解。这里通过一个小题目,来展示如何来看JVM输出的日志信息,并得出JVM几个设置变量的设置信息。...
分类:
其他好文 时间:
2014-10-30 22:44:13
阅读次数:
283
当Java程序申请内存,超出VM可分配内纯的时候,VM首先可能会GC,如果GC完还是不够,或者申请的直接超够VM可能有的,就会抛出内 存溢出异常。从VM规范中我们可以得到,一下几种异常。
java.lang.StackOverflowError:(很少)
java.lang.OutOfMemoryError:heap space(比较常见)
java.lang.OutOfMemoryErro...
分类:
其他好文 时间:
2014-10-29 21:35:04
阅读次数:
232
1 什么是内存泄露? 内存泄露是指没用的对象持续占有内存空间,造成内存空间浪费。所以说JAVA是有内存泄露的。2 内存泄露的原因是什么? 较长生命周期对象持有短生命周期对象的引用,导致短生命周期对象得不到释放。
分类:
编程语言 时间:
2014-10-26 15:26:42
阅读次数:
148
1、自带的jconsole工具。 (1)假设是从命令行启动,使 JDK 在 PATH 上,执行 jconsole 就可以。 (2)假设从 GUI shell 启动,找到 JDK 安装路径,打开 bin 目录,双击 jconsole 。 (3)当分析工具弹出时(取决于正在执行的 Java 版本号以及正...
分类:
编程语言 时间:
2014-10-26 13:06:57
阅读次数:
199
(问题一:什么叫垃圾回收机制?)垃圾回收是一种动态存储管理技术,它自动地释放不再被程序引用的对象,按照特定的垃圾收集算法来实现资源自动回收的功能。当一个对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用,以免造成内存泄露。(问题二:java的垃圾回收有什么特点?)JAVA语言不允...
分类:
编程语言 时间:
2014-10-23 22:21:25
阅读次数:
237
如何区分垃圾 上面说到的“引用计数”法,通过统计控制生成对象和删除对象时的引用数来判断。垃圾回收程序收集计数为0的对象即可。但是这种方法无法解决循环引用。所以,后来实现的垃圾判断算法中,都是从程序运行的根节点出发,遍历整个对象引用,查找存活的对象。那么在这种方式的实现中,垃圾回收从哪儿开始的呢?即,...
分类:
其他好文 时间:
2014-10-22 20:22:31
阅读次数:
186
Java内存管理机制 在C++ 语言中,如果需要动态分配一块内存,程序员需要负责这块内存的整个生命周期。从申请分配、到使用、再到最后的释放。这样的过程非常灵活,但是却十分繁琐,程序员很容易由于疏忽而忘记释放...
分类:
编程语言 时间:
2014-10-22 18:39:42
阅读次数:
238