java 注解应用技巧

曾经遇到过性能问题吗? 我也是。 如果我的经理再喊一次“ faaaaster”,我一生都会有听力障碍。 顺便说一句,我能听到所有噪音中的德语发音吗? ;-)

您可以相信仍然有人无知地在谈论垃圾收集器(得到它吗?)和JVM的性能。

……我将再次返回C语言,因此我不必担心性能……

*叹*

JVM一直在不断改进其收集器算法,并且每个发行版中都将高度复杂的优化功能集成到了编译器中(并且在过去十年中一直在这样做)。 您是否真的希望比世界上一些最聪明的人有经验,能力和时间来编写更好,更优化的C代码?

Pleeeeease…

如果你和我一样,我们的99.99%的休息,你是明智忘掉C.只要克服它。 (向所有核心C程序员致敬,不要被激怒)。

尽管我们开发人员热爱抽象,但我们不能否认它们天生就是泄漏的事实。 硬件很重要。 处理器数量和内存增长的趋势使共享内存线程并发变得更加困难。 锁定 ,上下文切换和线程调度可以使您的吞吐量等于糖浆,认为将更多线程倒入闪亮的新超级美容机中将以某种方式神奇地为您提供更多性能。 在某种程度上可能会,但这不是我的意思。

那么该怎么办? 我并没有声称自己是一名性能专家,但我不是,但是我有一些实用建议,至少可以帮助我解决过去一些讨厌的性能错误。

1.编写简洁明了的代码。 考虑使您的类不可变,它们是线程安全的,因此不需要同步,并且可以放心地对其进行缓存,以确保对象值在创建后不会更改。 不变性还导致代码更易于理解。 不要尝试使用过早的优化技巧来超越JVM。

Donald Knuth说: “程序员浪费大量时间来思考或担心程序非关键部分的速度,而这些效率的尝试实际上在考虑调试和维护时会产生严重的负面影响。 我们应该忘记效率低下的问题,例如大约97%的时间:过早的优化是万恶之源。 但是我们不应该放弃我们那关键的3%的机会。”

2.花一些时间了解不同垃圾收集器的工作方式。 信息有点分散,但是它在那里。 找到垃圾回收和您的应用程序之间的资源共享最有效点。 一般来说,较大的堆意味着垃圾收集器需要更加努力地工作(窃取更多的CPU周期),并且暂停时间会更长,但频率却更低。 以我的经验,即使使用CMS也无法避免世界停顿,因为最终您的堆将像瑞士奶酪一样碎片化,并且繁荣, 内存碎片化失败 。 好消息是,JDK7可能会包含一个名为G1的新的低暂停时间收集器,该收集器有可能完全避免世界停顿。 另请参阅Java 7中的垃圾优先收集器(G1) 。

3.编程时,默认始终使用java.util.concurrency 。 阅读Java内存模型和线程规范 。 它将帮助您理解为什么您的代码可能无法正常运行。 关于并发的主题也有很多不错的书:

  • 实践中的Java并发
  • 多处理器编程的艺术
  • Java并发编程:设计原理和模式(第二版)

4.您可能正在处理具有粗糙粒度同步的旧代码(您无法影响),从而导致高线程争用。 将CPU亲和力与同一台机器上的多个JVM进程一起使用可以帮助减少对热锁的争用。

5.如果您认为通过执行基准测试发现JVM性能问题,请首先确保您“知道”测量结果是准确的 。 如果您尝试测量某些东西, 请不要测量其他东西 。 忽略此建议可能会使您误以为是真正的问题所在。 因此,在开始测量之前,请确保正确隔离系统部件。

例如,如果您怀疑线程争用,请查看ThreadInfo或尝试jstat并查找sun.rt._sync_ContendedLockAttempts。

jstat -J-Djstat.showUnsupported=true -snap PID | grep _sync_

关于这个主题有太多话要说,但是我现在没有时间写更多。 编码愉快!

参考: Deep Hacks博客上的JCG合作伙伴 KristofferSjögren的 Usain Bolt看起来 不错 。

相关文章 :

  • Java最佳实践
  • 如何在Java中获得类似于C的性能
  • 每个程序员应了解的内存系统知识
  • Java内存模型-快速概述和注意事项

翻译自: https://www.javacodegeeks.com/2011/09/quick-tips-for-improving-java-apps.html

java 注解应用技巧

java 注解应用技巧_改善Java应用程序性能的快速技巧相关推荐

  1. java注解的开发_使用Java注解开发自动生成SQL

    使用注解开发的好处就是减少配置文件的使用.在实际过程中,随着项目越来越复杂,功能越来越多,会产生非常多的配置文件.但是,当配置文件过多,实际维护过程中产生的问题就不容易定位,这样就会徒劳的增加工作量. ...

  2. 改善Java应用程序性能的快速技巧

    曾经遇到过性能问题吗? 我也是. 如果我的经理再喊一次" faaaaster",我一生都会有听力障碍. 顺便说一句,我能听到所有声音中的德语发音吗? ;-) 您可以相信仍然有人无知 ...

  3. java 代码解析工具_改善 Java 代码质量的工具与方法

    原标题:改善 Java 代码质量的工具与方法 我们可能见过上面的有关代码质量的图片,究竟如何衡量一段代码好坏? 代码质量是什么?为什么它很重要? 作家通过他的著作来讲述了一个清晰的.令人信服的故事.他 ...

  4. java数组子类型_[改善Java代码]数组的真实类型必须是泛型类型的子类型

    List接口的toArray方法可以把一个结合转化为数组,但是使用不方便,toArray()方法返回的是一个Object数组,所以需要自行转变. toArray(T[] a)虽然返回的是T类型的数组, ...

  5. java注解执行顺序_如何确保java中的注释执行顺序?

    您可以使用@Order注释确保自定义注释的顺序. 例: 第一个注释: @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) p ...

  6. hibernate性能_改善Hibernate应用程序性能的7种方法

    hibernate性能 Hibernate是将Java Web应用程序与SQL数据库集成的好工具,但是当应用程序的响应时间开始显着增加时,我们应该怎么做? 当我们怀疑应用程序是否会随着客户群的增长而扩 ...

  7. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  8. 改善WPF应用程序性能的10大方法(转)

    细数改善WPF应用程序性能的10大方法 2010年11月16日00:05 it168网站原创  作者:IT168 黄永兵  编辑:胡铭娅 评论:0条 本文Tag: ASP.NET WPF .NET   ...

  9. java ee 的使用方法_改善Java EE生产支持技能的8种方法

    java ee 的使用方法 参与Java EE生产支持的每个人都知道这项工作可能很困难. 7/24寻呼机支持,多个事件和错误修复(要定期处理),来自客户和管理团队的压力,要求它们尽快解决生产问题并防止 ...

最新文章

  1. Java程序 实验小全
  2. day 33(套接字,TCP 与 UDP)
  3. Java培训教程之使用Lock取代synchronized
  4. 如果没有就插入,如果有就更新
  5. 笑到打鸣~ | 今日趣图
  6. 【UOJ549】序列妙妙值【异或】【根号分治】
  7. 牛客题霸 [螺旋矩阵] C++题解/答案
  8. VIP文档复制文字方法
  9. SI4463模块使用心得(无线协议)
  10. 中国AI领袖人物|阿里王坚:区块链与数据价值的交换
  11. 野火Linux内核编译
  12. python条形图一直长_Python MatPlotlib条形图调整宽度
  13. apkmirror_how to download your app from apkmirror to get the lastest app version
  14. csp 4-2 卖菜 (300 分)
  15. 曾因“贿赂”苹果被罚款 10.3 亿美元,高通上诉成功
  16. 查询至少选了1班2号同学所选课的所有同学班号、学号
  17. 哈夫曼树与哈夫曼编码及等长编码
  18. 古人诚不欺我-南怀瑾大师
  19. 关闭ubuntu18.04软键盘及多指操作
  20. 孔乙己——纪念当今的穷酸大学生们

热门文章

  1. Java中的TreeSet集合会自动将元素升序排序
  2. eclipse下载与安装步骤详解,包含解决错误(最全最详细,多图)
  3. mybatis三种(查询,参数传递)
  4. 定时任务重启后执行策略_C语言操作时间函数time.ctime,实现定时执行某个任务小例子...
  5. 转:Java 7 种阻塞队列详解
  6. ReviewForJob——希尔排序(缩小增量排序)之塞奇威克增量序列
  7. 数据库编程——intro to JDBC
  8. ide 日志 乱码_IDE日志分析方法pt。 1个
  9. netbeans连接数据库_NetBeans Java EE技巧#1 –数据库中的实体类
  10. java8默认垃圾收集器_Java 8中最快的垃圾收集器是什么?