随笔分类 - JAVA基础
摘要:1、检测内存泄露的理论 对象的年龄:每次垃圾收集器运行时,一个对象或者是活下来或者是被回收,如果活下来,则其年龄加1. 对象的代的个数:即不同对象的年龄数。若堆上的对象的年龄分别为1,3,5, 则其由个不同的年龄,其代数为3. 正常程序的代的个数:正常程序中代的个数会稳定下来,因为应用程序的持久对象
阅读全文
摘要:一、Linux 命令行 top sar vmstat iostat pidstat 二、JDK命令行 jps -l -m -v jstat jinfo jmap jhat jstat -l jstatd hprof 三、JConsole 四、Visual VM 线程Dump 分析,内存 Dump分析
阅读全文
摘要:一、调优工作流程 (1)、划分系统需求优先级(内存消耗、响应时间、吞吐量、可用性、可管理性、启动时间等) (2)、选择JVM部署模式:单JVM还是多JVM,32位或64位,64位指针压缩 (3)、选择JVM Runtime:-client 还是 server 模式,垃圾回收器Parallel 还是
阅读全文
摘要:一、性能优化的类型 1、使用更高效的算法 2、减少锁竞争 3、为算法生成更有效率的代码 二、CPU的使用 用BufferedOutputStream 替代直接的 FileOutputStream 利用缓冲、NIO改善磁盘与网络的IO瓶颈。 三、锁竞争 利用ConcurrentHashMap 替代 H
阅读全文
摘要:一、性能优化的类型 1、使用更高效的算法 2、减少锁竞争 3、为算法生成更有效率的代码 二、CPU的使用 用BufferedOutputStream 替代直接的 FileOutputStream 利用缓冲、NIO改善磁盘与网络的IO瓶颈。 三、锁竞争 利用ConcurrentHashMap 替代 H
阅读全文
摘要:性能分析很少在生产环境中进行,通常在质量评估、测试或者开发环境中进行,作为监控活动发现性能问题时的后续活动。 1、Oracle Solaris Studio Performance Analyzer 只能安装在Solaris/Linux 平台上。 2、 NetBeans Profiler
阅读全文
摘要:性能分析很少在生产环境中进行,通常在质量评估、测试或者开发环境中进行,作为监控活动发现性能问题时的后续活动。 1、Oracle Solaris Studio Performance Analyzer 只能安装在Solaris/Linux 平台上。 2、 NetBeans Profiler
阅读全文
摘要:JVM 性能监控一般在生产环境中。 一、垃圾收集 JVM 记录垃圾收集报告几乎没有什么额外开销,因此建议在生产环境中开启: -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/opt/hbase/bin/../logs/gc
阅读全文
摘要:一、JVM 的基本架构 JIT编译器 (Just-In-Time Compiler, 即时编译器):Client 或 Server 垃圾收集器:Serial、Parallel、CMS、G1 JVM Runtime: 32 位JVM 的最大内存约为2.5~3G . 64 位JVM 的指针压缩:-XX:
阅读全文
摘要:一、CPU 使用率 命令: vmstat 输出 最后的CPU列::us = user, sy=system ,id=idle ,wa=waiting ,st= 命令: mpstat 输出 命令: top 输出 二、CPU调度程序运行队列 命令: vmstat 三、内存利用率 命令: vmstat m
阅读全文
摘要:jstatd 的启动步骤: 1、新建文件jstatd.all.policy,内容如下 2、启动 3、启动 jvisualvm 4、连接 5、成功
阅读全文
摘要:一、设计模式 1、单例模式: 对于频繁使用的对象,可以省略创建对象所花费的时间,减少内存使用频率,减轻GC压力。 单例模式相比静态类的优势:可以继承、被继承、实现接口,面向对象风格;静态类不行,是面向过程风格的。 2、代理模式: 因为安全原因,屏蔽客户端直接访问真实对象;远程调用,隐藏远程调用的细节
阅读全文
摘要:一、Class的生命周期 1、加载:将.class 文件读取到内存,存放在方法区(Perm Gen), 最终产品是Class对象。 2、验证:检查是否有正确数据结构。 3、准备:JVM为Class的静态变量分配内存,并设置默认初始值。 4、解析:把Class的二进制数据中的符号引用替换为直接引用。
阅读全文
摘要:1、每天15万 PV 的在线文档类型网站 环境:4 CPU,16GB 内存, 64位 CentOS 5.4 问题:网站失去响应 原先JVM配置:JDK1.5, -Xmx12G -Xms12G 解决过程:发现问题来自GC停顿(12G内存 的 Full GC 需要12秒),内存中暂存文件导致“朝生夕灭”
阅读全文
摘要:1、jps 列出JVM 进程 其中: -m 列出输入参数;-l 列出类全名 ;-v 列出JVM 参数 命令: jps -l 输出: 命令:jps -l -m -v 2、jstat 列出JVM统计信息 命令: jstat -gc 7164 250 20 (获取进程7164的Heap 状况,250毫秒为
阅读全文
摘要:1、对象是否已死 (1). 引用计数法:无法回收相互引用的对象,故JVM没有采用 例子: 以上例子使用引用计数法无法回收,但是JVM使用的不是,JVM可回收。 (2). 可达性分析算法: 通过一系列“GC root” 作为起始点,从这些节点开始往下搜索,搜索经过的路径成为引用链。若对象不与引用链相连
阅读全文
摘要:1、JVM 运行时数据区 所有线程共享的数据区:方法区(持久代)、堆区 线程隔离的数据区:程序计数器、Java虚拟机栈区 堆区构成:新生代 ( 由Eden, From Survivor, To Survivor 构成)、老生代 运行时常量池:方法区一部分,用于存放编译期生成的各种字面量和符号引用 直
阅读全文
摘要:http://blog.chinaunix.net/uid-26602509-id-4110150.html 简介 考虑一下这种场景,你开发了一个应用,它有十分优秀的布局设计,最新的特性以及其它的优秀特点。但是在性能这方面欠缺,不管这个应用如何都会遭到客户拒绝。客户总是期望它们的应用应该有更好的性能
阅读全文
摘要:http://blog.csdn.net/kthq/article/details/8618052 堆内存设置 原理 JVM堆内存分为2块:Permanent Space 和 Heap Space。 Permanent 即 持久代(Permanent Generation),主要存放的是Java类定
阅读全文
浙公网安备 33010602011771号