send_linux 发表于 2012-10-19 15:53

Java程序性能优化 ,您从何入手?(获奖名单已公布-2012-11-22)

获奖名单已公布,详情请看:http://bbs.chinaunix.net/thread-4055242-1-1.html

为什么程序越跑越慢,究竟哪里出问题?为什么系统频频崩溃,内存溢出?该如何处理?
作为一名Java工程师,我想你或多或少会遇到这些令人头痛的问题。在遇到这些问题时,你是否束手无策?还是处理得游刃有余?
就比如说Java的性能调优,什么是性能调优?调优的规则有哪些?
不论如何,我都希望你能参与到这个讨论中。发表自己的看法和见解,向大家分享自己宝贵的经验。一起学习,共同进步。


讨论问题:
1.Java中字符串分割的性能讨论
2. 如果程序性能不如人意,如何找到代码中的性能瓶颈
3. 如果系统频繁发生Out of Memory异常,该如何分析和解决问题
4、您在Java程序开发和调优中用到的一些有用的技巧

邀请嘉宾:

Java版版主:kakasi,CU资深Java版版主,资深java架构师

图书作者,葛一鸣,CU论坛ID为billykinggym,毕业于浙江工业大学,获得了计算机软件与理论专业硕士学位。取得了国家认证系统分析师职称、OCP(Oracle数据库认证专家)。现就职于UT斯达康通讯有限公司,从事Java软件开发。有多年的软件开发经验,参与开发过多个软件项目。熟悉Java、PHP、MySQL、Oracle等开发语言和数据库,对Java软件开发、性能优化、分布式软件有着浓厚的兴趣和深入的研究。在校期间曾经发表过多篇技术论文。


活动时间:2012.10.20-2012.11.10

活动要求:
1、 要言之有物,不能低于20个字
2、 本次话题主要关注Java、JVM和Java开发相关的工具讨论,其他问题可能不做重点
         
讨论有奖:
活动结束后,我们会评选出五位积极参与话题讨论的网友奖励《Java程序性能优化》图书一本,对其他积极参与讨论的网友(回帖有参考价值)我们将奖励积分20分。

奖品简介:
Java程序性能优化

作  者: 葛一鸣 等 著
出 版 社: 清华大学出版社
ISBN:9787302296256
出版时间:2012-09-01

图书简介:
java是目前应用最为广泛的软件开发平台,学习针对java程序的优化方法有重要的现实意义。《java程序性能优化——让你的java程序更快、更稳定》以java性能调优为主线,系统地阐述了与java性能优化相关的知识与技巧。
   《java程序性能优化——让你的java程序更快、更稳定》共6章,先后从软件设计、软件编码、jvm调优以及程序故障排除等方面介绍针对java程序的优化方法。第1章介绍性能的基本概念、定律、系统调优的过程和注意事项;第2章从设计层面介绍与性能相关的设计模式、组件。第3章从代码层面介绍如何编写高性能的java程序;第4章介绍并行开发和如何通过多线程提高系统性能;第5章立足于jvm虚拟机层面,介绍如何通过设置合理的jvm参数提升java程序的性能;第6章为工具篇,介绍获取和监控程序或系统性能指标的各种工具,包括相关的故障排查工具。
   《java程序性能优化——让你的java程序更快、更稳定》适合所有java程序员、软件设计师、架构师以及软件开发爱好者,对于有一定经验的java工程师,本书更能帮助突破技术瓶颈,深入java内核开发!

蓝色蜻蜓 发表于 2012-10-19 21:29

程序调优绝非易事,尤其是在操作系统中监控到cpu使用率不断上升直至达到100%,而在应用日志中却找到不到任何可疑的交易或者线程,面临庞大的代码,找到具体的问题那就更加难上加难了;
虽然通过avacore文件能够分析到某些类文件和正在运行的线程,可这些线程之间的互相等待或者阻塞需要耐心的去梳理。

send_linux 发表于 2012-10-19 22:20

蓝色蜻蜓 发表于 2012-10-19 21:29 static/image/common/back.gif
程序调优绝非易事,尤其是在操作系统中监控到cpu使用率不断上升直至达到100%,而在应用日志中却找到不到任何 ...

感谢参与哦,原来我们的java版还是有不少用户的啊,呵呵

billykinggym 发表于 2012-10-19 23:39

蓝色蜻蜓 发表于 2012-10-19 21:29 static/image/common/back.gif
程序调优绝非易事,尤其是在操作系统中监控到cpu使用率不断上升直至达到100%,而在应用日志中却找到不到任何 ...

是的。梳理线程以及锁之间的关系,确实很烦人。Thread Dump里信息繁多。很难分析。不过也有些工具可以使用,减轻分析的工作量。比如Thread Dump Analyer(书中第6章有简单的介绍)这些分析dump文件的工具。

hbsycw 发表于 2012-10-22 16:30

终于有个特感兴趣的话题可以讨论了,哈哈,积极参与~

action08 发表于 2012-10-22 16:36

本帖最后由 action08 于 2012-10-22 17:52 编辑

恩,欢迎各位大牛分享冲在技术一线经验心得:em17:

hbsycw 发表于 2012-10-22 17:58

本帖最后由 hbsycw 于 2012-10-22 18:00 编辑

刚才开会去了,现在先来回答第一个问题:

1.Java中字符串分割的性能讨论

首先,JDK提供的类库里面,对字符串分割可以有三种方法,String.split(); String.SubString() 以及 java.util.StringTokenizer(); 读下源码应该知道其性能应该大致是:SubString() > StringTokenizer() > split() :time:

billykinggym 发表于 2012-10-22 18:11

hbsycw 发表于 2012-10-22 17:58 static/image/common/back.gif
刚才开会去了,现在先来回答第一个问题:

1.Java中字符串分割的性能讨论
首先,JDK提供的类库里面,对字符串分割可以有三种方法,String.split(); String.SubString() 以及 java.util.StringTokenizer(); 读下源码应该知道其性能应该大致是:SubString() > StringTokenizer() > split()


是的,但是要注意subString()这个东东,会导致内存溢出哦。如果你不即使释放资源的话。书里面第3章有详细的介绍。所以处理大字符串的时候,最好要注意点。split()虽然慢点,但它可以支持正则表达式,用起来还是有点方便的。最快的方法就是自己实现啦,用indexOf()之类的函数自己做,性能最好。但是比较麻烦~~

hbsycw 发表于 2012-10-22 19:16

回复 8# billykinggym

用substring(),当然要用indexOf();就看你怎么看substring() 了,其实这是Java字符串分割的基本方法,无论是StringTokenizer() 还是Split(), 其内部实现都是substring()。至于,内存泄漏,这个我们可以专题讨论,哈哈~


   

billykinggym 发表于 2012-10-22 19:24

回复 9# hbsycw


    嗯,是的。终于有人回复我了。激动呀~
页: [1] 2 3 4 5 6
查看完整版本: Java程序性能优化 ,您从何入手?(获奖名单已公布-2012-11-22)