2015年11月8日

摘要: 我想关注这个系列博客的粉丝们都应该已经发现了,我一定是个懒虫,在这里向大家道歉了。这个系列的博客是在我工作之余写的,经常几天才写一小节,不过本着宁缺毋滥的精神,所有写的东西都是比较精炼的。这篇文章是本系列的第五篇,主要讲Java线程相关的内容,基本上包含了线程要了解的比较深入的东西。技术在于积累,在... 阅读全文
posted @ 2015-11-08 22:17 帅胡 阅读(228) 评论(0) 推荐(0)
摘要: 目录参数设置收集器搭配启动内存分配监控工具和方法调优方法调优实例 光说不练假把式,学习Java GC机制的目的是为了实用,也就是为了在JVM出现问题时分析原因并解决之。通过学习,我觉得JVM监控与调优主要的着眼点在于如何配置、如何监控、如何优化3点上。下面就将针对这3点进行学习。(如果您对Java的... 阅读全文
posted @ 2015-11-08 22:16 帅胡 阅读(172) 评论(0) 推荐(0)
摘要: 目录Java垃圾回收概况Java内存区域Java对象的访问方式Java内存分配机制Java GC机制垃圾收集器Java垃圾回收概况 Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和... 阅读全文
posted @ 2015-11-08 22:15 帅胡 阅读(243) 评论(0) 推荐(0)
摘要: 目录前言传统的RTTI反射反射的实现方式反射的性能反射与设计模式前言并不是所有的Class都能在编译时明确,因此在某些情况下需要在运行时再发现和确定类型信息(比如:基于构建编程,),这就是RTTI(Runtime Type Information,运行时类型信息)。在java中,有两种RTTI的方式... 阅读全文
posted @ 2015-11-08 22:14 帅胡 阅读(206) 评论(0) 推荐(0)
摘要: 目录类加载器动态加载链接初始化示例类加载器在了解Java的机制之前,需要先了解类在JVM(Java虚拟机)中是如何加载的,这对后面理解java其它机制将有重要作用。每个类编译后产生一个Class对象,存储在.class文件中,JVM使用类加载器(Class Loader)来加载类的字节码文件(.cl... 阅读全文
posted @ 2015-11-08 22:12 帅胡 阅读(219) 评论(0) 推荐(0)
摘要: 堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下... 阅读全文
posted @ 2015-11-08 21:59 帅胡 阅读(304) 评论(0) 推荐(0)
摘要: Java NIO(New Input/Output)——新的输入/输出API包——是2002年引入到J2SE 1.4里的。Java NIO的目标是提高Java平台上的I/O密集型任务的性能。过了十年,很多Java开发者还是不知道怎么充分利用NIO,更少的人知道在Java SE 7里引入了更新的输入/... 阅读全文
posted @ 2015-11-08 21:58 帅胡 阅读(425) 评论(0) 推荐(0)
摘要: 很多Java面试的时候,都会问到有关Java垃圾回收的问题,提到垃圾回收肯定要涉及到JVM内存管理机制,Java语言的执行效率一直被C、C++程序员所嘲笑,其实,事实就是这样,Java在执行效率方面确实很低,一方面,Java语言采用面向对象思想,这也决定了其必然是开发效率高,执行效率低。另一方面,J... 阅读全文
posted @ 2015-11-08 21:56 帅胡 阅读(222) 评论(0) 推荐(0)
摘要: 分析JAVAApplication的内存使用时,jmap是一个很实用的轻量级工具。使用jmap可以查看heap空间的概要情况,粗略的掌握heap的使用情况。也可以生成heapdump文件,再使用jhat通过web浏览器具体分析内容中的对象和数据。jmap是JDK自带的一个工具,非常小巧方便,其支持参... 阅读全文
posted @ 2015-11-08 21:53 帅胡 阅读(1119) 评论(0) 推荐(0)
摘要: 在说垃圾回收算法之前,先谈谈JVM怎样确定哪些对象是“垃圾”。1.引用计数器算法:引用计数器算法是给每个对象设置一个计数器,当有地方引用这个对象的时候,计数器+1,当引用失效的时候,计数器-1,当计数器为0的时候,JVM就认为对象不再被使用,是“垃圾”了。引用计数器实现简单,效率高;但是不能解决循环... 阅读全文
posted @ 2015-11-08 21:52 帅胡 阅读(188) 评论(0) 推荐(0)
摘要: 类从加载到虚拟机到卸载,它的整个生命周期包括:加载(Loading),验证(Validation),准备(Preparation),解析(Resolution),初始化(Initialization),使用(Using)和卸载(Unloading)。其中,验证、准备和解析部分被称为连接(Linkin... 阅读全文
posted @ 2015-11-08 21:51 帅胡 阅读(200) 评论(0) 推荐(0)
摘要: Java虚拟机管理的内存包括以下几个运行时数据区域:1.程序计数器: 程序计数器是一块比较小的内存空间,是当前线程执行的字节码行号指示器。Java多线程是通过线程轮流切换来实现的,所以每个线程都有一个自己独立的程序计数器,各个线程的程序计数器互补干扰。2.Java虚拟机栈 Java虚拟机栈描述的... 阅读全文
posted @ 2015-11-08 21:50 帅胡 阅读(195) 评论(0) 推荐(0)
摘要: 问:堆和栈有什么区别?答:堆是存放对象的,但是对象内的临时变量是存在栈内存中,如例子中的methodVar是在运行期存放到栈中的。 栈是跟随线程的,有线程就有栈,堆是跟随JVM的,有JVM就有堆内存。问: 堆内存中到底存在着什么东西?答:对象,包括对象变量以及对象方法。问:类变量和实例变量有什么区别... 阅读全文
posted @ 2015-11-08 21:49 帅胡 阅读(198) 评论(0) 推荐(0)
摘要: 一.概述定义:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型。类加载和连接的过程都是在运行期间完成的。二. 类的加载方式1):本地编译好的class中直接加载2):网络加载:java.net.URLClassLoader... 阅读全文
posted @ 2015-11-08 21:48 帅胡 阅读(384) 评论(0) 推荐(0)
摘要: Java性能调优笔记 调优步骤:衡量系统现状、设定调优目标、寻找性能瓶颈、性能调优、衡量是否到达目标(如果未到达目标,需重新寻找性能瓶颈)、性能调优结束。 寻找性能瓶颈 性能瓶颈的表象:资源消耗过多、外部处理系统的性能不足、资源消耗不多但程序的响应速度却仍达不到要求。 资源消耗:CPU、文件IO、网... 阅读全文
posted @ 2015-11-08 21:47 帅胡 阅读(262) 评论(0) 推荐(0)
摘要: 环境:操作系统:centos 6.5 x64 cpu:32 core内存: 32G web服务器:tomcat 6.xjdk :1.6x测试环境:操作系统:centos 6.5 x64 cpu:32 core内存: 32G ab 作为性能测试工具在做性能测试之前,对客户端和服务端均进行服务端优化(l... 阅读全文
posted @ 2015-11-08 21:45 帅胡 阅读(464) 评论(0) 推荐(0)
摘要: 在了解WeakReference之前,先给出一段简单的代码:public class WeakReferenceTest {public static void main(String[] args) throws Exception {Object o = new Object();// 默认的构... 阅读全文
posted @ 2015-11-08 21:42 帅胡 阅读(503) 评论(0) 推荐(0)
摘要: Java中一共有4种类型的引用: StrongReference、SoftReference、WeakReference以及PhantomReference (传说中的幽灵引用).这4种类型的引用与GC有着密切的关系,让我们逐一来看它们的定义和使用场景:1. Strong Reference Str... 阅读全文
posted @ 2015-11-08 21:41 帅胡 阅读(474) 评论(0) 推荐(0)
摘要: Java世界泰山北斗级大作《Thinking In Java》切入Java就提出“Everything is Object”。在Java这个充满Object的世界中,reference是一切谜题的根源,所有的故事都是从这里开始的。Reference是什么? 如果你和我一样在进入Java世界之前曾经浪... 阅读全文
posted @ 2015-11-08 21:40 帅胡 阅读(411) 评论(0) 推荐(0)
摘要: 前几篇篇文章介绍了介绍了JVM的参数设置并给出了一些生产环境的JVM参数配置参考方案。正如之前文章中提到的JVM参数的设置需要根据应用的特性来进行设置,每个参数的设置都需要对JVM进行长时间的监测,并不断进行调整才能找到最佳设置方案。本文将介绍如果通过工具及Java api来监测JVM的运行状态,并... 阅读全文
posted @ 2015-11-08 21:38 帅胡 阅读(332) 评论(0) 推荐(0)
摘要: java application项目(非web项目)改进前:-Xms128m-Xmx128m-XX:NewSize=64m-XX:PermSize=64m-XX:+UseConcMarkSweepGC-XX:CMSInitiatingOccupancyFraction=78-XX:ThreadSta... 阅读全文
posted @ 2015-11-08 21:36 帅胡 阅读(228) 评论(0) 推荐(0)
摘要: JVM里的GC(Garbage Collection)的算法有很多种,如标记清除收集器,压缩收集器,分代收集器等等,详见HotSpot VM GC 的种类 现在比较常用的是分代收集(generational collection,也是SUN VM使用的,J2SE1.2之后引入),即将内存分为几个区域... 阅读全文
posted @ 2015-11-08 21:33 帅胡 阅读(344) 评论(0) 推荐(0)
摘要: 不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序... 阅读全文
posted @ 2015-11-08 21:33 帅胡 阅读(160) 评论(0) 推荐(0)
摘要: collector种类GC在 HotSpot VM 5.0里有四种:incremental (sometimes called train) low pause collector已被废弃,不在介绍.类别serial collectorparallel collector(throughput co... 阅读全文
posted @ 2015-11-08 21:31 帅胡 阅读(260) 评论(0) 推荐(0)
摘要: java内存组成介绍:堆(Heap)和非堆(Non-heap)内存 按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主... 阅读全文
posted @ 2015-11-08 21:29 帅胡 阅读(331) 评论(0) 推荐(0)
摘要: 堆设置-Xmx3550m:设置JVM最大堆内存 为3550M。-Xms3550m:设置JVM初始堆内存 为3550M。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。-Xss128k: 设置每个线程的栈 大小。JDK5.0以后每个线程栈大小为1M,之前每个线程栈大小为256K... 阅读全文
posted @ 2015-11-08 21:27 帅胡 阅读(197) 评论(0) 推荐(0)
摘要: 一、设置JVM内存设置1. 设置JVM内存的参数有四个:-XmxJava Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定;-XmsJava Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;-Xmn... 阅读全文
posted @ 2015-11-08 21:26 帅胡 阅读(278) 评论(0) 推荐(0)

导航