摘要: 1.在jDK 5开始增加了线程安全的Map接口 ConcurrentMap 2.Hashtable是JDK 5之前唯一线程安全的内置实现。特别说明的是Hashtable的t是小写的,原因(暂不明确), ConcurrentHashMap是HashMap的线程安全版本,ConcurrentSkipLi 阅读全文
posted @ 2018-08-20 16:41 飞蜗牛 阅读(3255) 评论(0) 推荐(0) 编辑
摘要: 1.高性能硬件上的程序部署策略 例如:一个15万PV/天左右(PV:网站的浏览量)的在线文档类型网站最近更换了硬件系统,新的硬件为4个CPU、16GB物理内存,操作系统为64位CentOS 5.4,Resin作为Web服务器,整个服务器暂时没有部署别的应用,所有硬件资源都可以提供给这访问量并不算太大 阅读全文
posted @ 2018-08-14 17:09 飞蜗牛 阅读(183) 评论(0) 推荐(0) 编辑
摘要: jps:JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程 jstat:JVM Statistics Monitoring Tool,用户收集HotSpot虚拟机各方面的运行数据 jinfo:Configuration Info for Java,显示虚拟机 阅读全文
posted @ 2018-08-13 18:07 飞蜗牛 阅读(680) 评论(0) 推荐(0) 编辑
摘要: 阅读GC日志是处理Java虚拟机内存问题的基础技能,它只是一些人为确定的规则,没有太多的技术含量。 每一种收集器的日志形式都是由它们自身的实所决定的,每个收集器的日志格式都可以不一样。 最前面的数字“33.125”和“100.667”代表了GC发生的时间,这个数字的含义是从Java虚拟机启动以来经过 阅读全文
posted @ 2018-08-13 11:07 飞蜗牛 阅读(488) 评论(0) 推荐(0) 编辑
摘要: 1.CMS收集器 Concurrent Mark Sweep CMS收集器是一种以获取最短回收停顿时间为目标的收集器。目前很大一部分的java应用集中在互联网站或者B/S系统的服务端上,这类应用尤其重视服务的相应速度,希望系统停顿时间最短,以给用户带来较好的体验。CMS收集器就非常符合这类应用的需求 阅读全文
posted @ 2018-08-13 10:51 飞蜗牛 阅读(2743) 评论(0) 推荐(0) 编辑
摘要: 如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。java虚拟机规范中对垃圾收集器应该如何实现没有任何规定,因此不同的厂商、不同版本的虚拟机所提供的垃圾收集器都可能会有很大差别,并且一般都会提供参数供用户根据自己的应用特点和要求组合出各个年代所使用的收集器。这里以JDK1.7U 阅读全文
posted @ 2018-08-10 17:17 飞蜗牛 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 很多人认为方法区(或者hotSpot虚拟机中的永久代)是没有垃圾收集的,java虚拟机规范中确实说过不要求虚拟机在方法区实现垃圾收集,而且在方法区中进行垃圾收集的“性价比”一般比较低:在堆中,尤其是新生代中,常规应用进行一次垃圾收集一般可以回收70% ~ 95%的空间,而永久代的垃圾收集效率远低于此 阅读全文
posted @ 2018-08-10 14:48 飞蜗牛 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 在hotspot虚拟机中,对象在内存中存储的布局可以分为I3块区域:对象头、实例数据、对齐填充 1.对象头包括两部分信息,第一部分用户存储对象自身的运行时数据,如哈戏码、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等, 这部分数据长度在32位和64位的虚拟机中分别为32bit和6 阅读全文
posted @ 2018-08-09 15:29 飞蜗牛 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 1.对象的创建 首先虚拟机遇到一条new指令时,将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。 在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需内存的大小在类加载完成后便可 阅读全文
posted @ 2018-08-09 12:19 飞蜗牛 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 1.程序计数器 Program Counter Register 是一块较小的内存空间,可看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来 选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。 由于java 阅读全文
posted @ 2018-08-09 11:52 飞蜗牛 阅读(112) 评论(0) 推荐(0) 编辑