存档

文章标签 ‘优化’

Java垃圾回收(4):监控与分析

2014年11月30日 2 条评论

在本节,让我们来看一看Java垃圾回收的监控与分析。然后,使用一个工具,监控一个示例应用的垃圾回收过程。如果你是个新手,最好看一下本系列的前三篇文章。你可以从“Java垃圾回收入门”开始看。

Java垃圾回收的监控和分析工具

下面是几个可用的工具。每一个可用的工具都有自己的优点和不足。使用恰当的工具,以正确的方式开展分析,可以帮助我们提高应用的性能。在本文,我们主要使用Java VisualVM。

  • Java VisualVM
  • Naarad
  • GCViewer
  • IBM Pattern Modeling and Analysis Tool for Java Garbage Collector
  • HPjmeter
  • IBM Monitoring and Diagnostic Tools for Java – Garbage Collection and Memory
  • Visualizer
  • Verbose GC Analyzer 阅读全文…
分类: Java, 挨踢(IT) 标签: , ,

Java垃圾回收(3):常见的四种垃圾收集器

2014年11月23日 没有评论

本节我们将介绍几种可用的Java垃圾收集器。垃圾回收是一个自动进程,它把开发人员从内存的分配与回收的杂务中解放出来。本文是“Java垃圾回收系列”的第三篇。在上一篇,也就是第二篇中,我们了解了Java垃圾回收的工作原理,这节非常有意思,我推荐你看一看。在第一篇“Java垃圾回收入门”中,我们介绍了Java虚拟机架构,堆内存模型以及Java相关的一些术语。

Java有四种垃圾收集器:

  1. Serial Garbage Collector
  2. Parallel Garbage Collector
  3. CMS Garbage Collector
  4. G1 Garbage Collector

D瓜哥注

这是四种类型的垃圾收集器。具体到每一个实现,在Oracle提供的官方JDK中就有Serial Garbage Collector、ParNew Garbage Collector、Parallel Scavenge Garbage Collector、Serial Old Garbage Collector、Parallel Old Garbage Collector、CMS Garbage Collector、G1 Garbage Collector等七种垃圾收集器。以后有机会再专门写文章做详细介绍!

四种Java垃圾收集器工作流程对比

这四种垃圾收集器每一种都有自己的优点与不足。最重要的是, 阅读全文…

分类: Java, 挨踢(IT) 标签: , ,

Java垃圾回收(2):工作原理

2014年11月16日 没有评论

本文将介绍Java垃圾回收的基础知识,同时将说明它的工作原理。同时,本文还是“Java垃圾回收系列”的第二篇文章。希望您已经阅读过该系列的第一篇文章,“Java垃圾回收入门”

Java垃圾回收是一个自动管理程序所用内存的进程。通过将内存的分配与回收交给Java虚拟机来自动完成,就可以将开发人员从这些繁琐易错的工作中解放出来。

垃圾回收的启动

作为一个自动化的进程,开发人员不需要在代码中显式地启动垃圾回收进程。System.gc()Runtime.gc()是申请垃圾收集器启动垃圾回收的勾子(hook)。

开发人员通过这种请求机制就有机会来请求启动垃圾回收,但是是否启动则由Java虚拟机自己决定。垃圾收集器可以选择拒绝这个请求,所以不保证请求到来之后就肯定进行垃圾回收。是否进行垃圾回收主要是根据堆内存中Eden内存的利用情况。Java虚拟机规范将这个选择权交给了实现,所以更详细的信息还要看具体的实现细节。

现在,我们知道了, 阅读全文…

分类: Java, 挨踢(IT) 标签: , ,

简易Java(07):substring()方法在JDK6和JDK7中的异同

2014年5月21日 没有评论

看到substring(),D瓜哥就想起来去年面试的惨痛精力。连续两次被问到substring()会造成什么问题;第一次被问到时,确实不知道会造成什么问题,面试结束后就查了查资料。但是,没有认真看。没想到接下来的面试又问到,由于没有看,还是没回答上来,结果面试就惨遭失败!

没想到,这次又遇到了substring()。所以,这篇文章D瓜哥必须好好翻译!

substring()会造成什么问题,请看参考资料

另外,需要提前说明一点,本节内容是针对Oracle JDK来说明的,其他JDK的实现也许可能不同。请读者自己查看相关文档以及源代码。

substring(int beginIndex, int endIndex)方法,在JDK6和JDK7中的实现是不一样的。了解实现的不同之处,可以帮助我们更好地使用这个方法。为了简单起见, 阅读全文…

分类: Java, 挨踢(IT) 标签: , , ,

Java7并发示例集108:处理线程的非受检异常

2013年10月9日 没有评论

Java语言中,把异常分为两类:

  • 受检异常: 这类异常必须在throws子句中被显式抛出或者在方法内被捕获。例如,IOException异常或ClassNotFoundException异常。
  • 非受检异常: 这类异常不需要显式抛出或捕获。例如,NumberFormatException异常。

当一个受检异常在Thread对象的run()方法中被抛出时,我们必须捕获并处理它,因为run()方法不能抛出异常。而一个非受检异常在Thread对象的run()方法中被抛出时,默认的行为是在控制台打印出堆栈跟踪信息然后退出程序。

幸运的是,Java为我们提供了一种机制, 阅读全文…

分类: Java, 挨踢(IT) 标签: ,

Java7并发示例集107:守护线程的创建和运行

2013年10月8日 没有评论

Java有一种特殊线程,守护线程,这种线程优先级特别低,只有在同一程序中的其他线程不执行时才会执行。

由于守护线程拥有这些特性,所以,一般用为为程序中的普通线程(也称为用户线程)提供服务。它们一般会有一个无限循环,或用于等待请求服务,或用于执行任务等。它们不可以做任何重要的工作,因为我们不确定他们什么时才能分配到CPU运行时间,而且当没有其他线程执行时,它们就会自动终止。这类线程的一个典型应用就是Java的垃圾回收。

在本节示例中,我们将创建 阅读全文…

分类: Java, 挨踢(IT) 标签: , ,

分享D瓜哥最近攒的资料(架构方面)

2013年8月27日 6 条评论

扯扯蛋

以前见过零零散散地介绍一些知名网站架构的分析文章。最近D瓜哥也想研究一下各大知名网站的架构。所以,就搜集了一下这方面资料。限于时间问题,这篇文章分享的文章并没有都看完,所以不保证所有文章的质量。另外,如果有朋友发现更好的文章,欢迎留言告知。再补充进来。

知名网站架构分析

  1. 探索Google App Engine背后的奥秘(1)–Google的核心技术
  2. 探索Google App Engine背后的奥秘(2)–Google的整体架构猜想
  3. 探索Google App Engine背后的奥秘(3)- Google App Engine的简介
  4. 探索Google App Engine背后的奥秘(4)- Google App Engine的架构
  5. 探索Google App Engine背后的奥秘(5)- Datastore的设计
  6. 探索Google App Engine背后的奥秘(6)- 阅读全文…

jQuery最佳实践

2013年4月10日 1 条评论

  临下班时,在CodeProject上看到了这篇文章的英文版,觉得不错。然后,晚上就加把劲把它翻译出来。初次翻译,水平有限,难免出错,敬请指正。

介绍

  我发现,jQuery真是一个伟大的框架,它可以非常容易而轻松地扩展了我们可以做的客户端代码程序。在这篇文章中,我将重点介绍一些使用jQuery的技巧,给你开一个高效使用jQuery框架的好头。即使你已经对jQuery比较熟悉,但是其中的一些技巧依然可以帮助你更有效而恰当地使用jQuery。

第一条:使用最新版的jQuery

  jQuery库的每个稳定发布版都会引入性能优化,同时 阅读全文…

WordPress折腾小记:彻底解决ID不连续的问题

2013年4月1日 10 条评论

  使用Wordpress,尤其从3.0走入Wordpress世界的朋友,也许都遇到过一个问题:自动保存(Auto-Save)和文章修订(Post-Revisioning)功能导致文章ID不连续的问题。有时还特别夸张。例如,我的“‘地瓜哥’博客网”,第一篇文章是1,第二篇文章已经一下子跳到了19。这样对于像D瓜哥这样的“ID洁癖”的人来说,实在很不爽!经过D瓜哥的多次尝试后,终于很彻底地解决了这个问题。并且,还可以把以前被自动备份的ID重新利用起来!

去掉自动草稿的功能

  造成发布文章ID不连续的原因有三:

  1. 自动保存功能 Auto-Save;
  2. 历史版本 Post Revisions;
  3. 自动草稿功能 Auto-Draft!

  针对WordPress 3.4.x, 阅读全文…

WordPress优化小记

2013年3月11日 1 条评论

  昨晚(2013年3月8日)无意间发现“‘地瓜哥’博客网”使用的SyntaxHighlighter插件所引用的JavaScript文件竟然没有压缩。这对于追求网站加载的我来说,是不能容忍的!早在“高性能网站的十四条黄金法则”中,D瓜哥就已经介绍了提高网站加载速度的指导方法。正好周末无事,干脆就把“‘地瓜哥’博客网”优化一下。著小文一篇以记之!

压缩JavaScipt和CSS

  JavaScript压缩代码的重要性不言而喻,如今的压缩工具也有不少,例如YUI Compressor, 阅读全文…