`
jerrycaoyong
  • 浏览: 2638 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论
文章列表
本文是Java并发包探秘的第一篇,旨在介绍一下Java并发容器中用的一些思路和技巧,帮助大家更好的理解Java并发容器,让我们更好的使用并发容器打造更高效的程序。本人能力有限,错误难免。希望及时指出。 Java并发包中有很多精心设计的高并发容器。有ConcurrentHashMap、ConcurrentSkipListMap 、ConcurrentLinkedQueue等。ConcurrentLinkedQueue就是其中设计最为优雅的高并发容器。它被设计成了无锁的、无界的、非阻塞式的单向链表结构。现在就让我们来一步一步揭开他们神秘的面纱。 正文开始: 一说到链表结构,我们首先就会想到的就是组成 ...
     最近在一个短信平台的项目中,遭遇内存溢出的困扰,由于代码是在原来代码的基础上改造出来的,对代码的不熟悉是造成这个困扰的根本原因,最终是通过Jprofiler找到原因,不得不向没用过这工具的朋友推荐下,以前见人用,也没觉得多有用,用起来才发现其强大的地方。        开始一直以为是过大并发量,造成JVM无法即时GC,造成内存溢出,甚至还怀疑上了JVM垃圾收集的效率问题,或是HashMap的设计bug,实际上最终发现是一线程没有释放引用,这当然还得感谢Jprofiler。因此我也对JVM刚兴趣,虽然平时不一定用的到,但是重要的是其设计思想,毕竟这是个经典的设计,禁得起时间的考验,很 ...
  java栈概述          记得当初我学习java时,常常听见身边的朋友说:“你要记住,当new一个对象时,对象的引用存放在栈里,而对象是存放在堆里的”。当时,听到这句教导时,脑海里立即出现栈的模型——里面存的仅仅是个引用。最近,看了下《深入JVM》,才发现,原来栈并不是我想象的那么简单,它和我想象中的那个栈的结构差别非常大。      每当启用一个线程时,JVM就为他分配一个JAVA栈,栈是以帧为单位保存当前线程的运行状态。某个线程正在执行的方法称为当前方法,当前方法使用的栈帧称为当前帧,当前方法所属的类称为当前类,当前类的常量池称为当前常量池。当线程执行一个方法时,它会跟踪当 ...
Global site tag (gtag.js) - Google Analytics