摘要:
深入理解Java虚拟机 -- 读书笔记:JVM运行时数据区域本文转载:http://blog.csdn.net/jubincn/article/details/8607790本系列为《深入理解Java虚拟机》(周志明著)读书笔记。Java程序员一般都知道JVM中存在栈和堆的,并简单了解对象是在堆上分配的,这点从C/C++转过Java的程序员很容易想到。但Java由于其自身的特性,还有一些其他的内存区域,如下图所示:程序计数器程序计数器占用的内存空间不大,里面记录了各线程当前字节码的行号。JVM的多线程是通过轮流执行CPU时间的方式实现,因此在一个线程离开自己的CPU切片时,需要记录当前的状态( 阅读全文
摘要:
Java并发编程学习笔记 深入理解volatile关键字的作用引言:以前只是看过介绍volatile的文章,对其的理解也只是停留在理论的层面上,由于最近在项目当中用到了关于并发方面的技术,所以下定决心深入研究一下java并发方面的知识。网上关于volatile的文章非常多,但是并没有讲解非常详细的文章。(哪位要是有好的资料麻烦共享一份给我!)多数的都是一些理论讲解,没有实际的例子代码,就算有代码的也测试不出效果,总之理论总是与代码不匹配。后来在我不懈的努力之下总算研究出一些成果,在此分享给大家!如果大家发现有错误的地方欢迎大家指正,谢谢!在Java线程并发处理中,有一个关键字volatile的 阅读全文
摘要:
看看你下面的这两个文件,是不是尺寸差别很大?%JAVA_HOME%/jre/bin/client/jvm.dll%JAVA_HOME%/jre/bin/server/jvm.dllJvm动态库有client和server两个版本,分别针对桌面应用和服务器应用做了相应的优化,client版本加载速度较快,server版本加载速度较慢但运行起来较快。让Tomcat使用Server版本的jvm吧在开始菜单tomcat5->tomcatconfig的java属性中有一项jvm路径指向server目录下的jvm就行了。启动速度对比一下,在我的C4.17512M的机器上client版本一般在8s-1 阅读全文
摘要:
本文转载:http://www.infoq.com/cn/articles/double-checked-locking-with-delay-initialization在java程序中,有时候可能需要推迟一些高开销的对象初始化操作,并且只有在使用这些对象时才进行初始化。此时程序员可能会采用延迟初始化。但要正确实现线程安全的延迟初始化需要一些技巧,否则很容易出现问题。比如,下面是非线程安全的延迟初始化对象的示例代码:public class UnsafeLazyInitialization {private static Instance instance;public static Ins 阅读全文