了解Java内存模型和垃圾收集

了解Java内存模型和垃圾收集,java,tags,Java,Tags,我倾向于让学生或寻找资源的同事问我这些问题,所以我想给他们一个更明确的参考。不妨与社区分享 Java内存模型是如何表示的,其特点是什么 垃圾收集在一般情况下和最常见的JVM中是如何工作的 如何测试和调优Java应用程序的性能 内存基础 每个程序员都应该知道的关于内存的知识-Ulrich Drepper[] Java虚拟机规范[适用于JavaSE7] 编程高级主题:Java内存模型-Jeremy Manson[] Java内存模型资源集合-由Bill Pugh()编辑和编译 热点虚拟机

我倾向于让学生或寻找资源的同事问我这些问题,所以我想给他们一个更明确的参考。不妨与社区分享

  • Java内存模型是如何表示的,其特点是什么

  • 垃圾收集在一般情况下和最常见的JVM中是如何工作的

  • 如何测试和调优Java应用程序的性能

内存基础
  • 每个程序员都应该知道的关于内存的知识-Ulrich Drepper[]
  • Java虚拟机规范[适用于JavaSE7]
  • 编程高级主题:Java内存模型-Jeremy Manson[]
  • Java内存模型资源集合-由Bill Pugh()编辑和编译
  • 热点虚拟机中的内存管理-Sun Microsystems(2006)[]
  • 修复Java内存模型-Brian Goetz,IBM Java开发人员系列()[,]
Java性能
  • Java性能的9个谬误-Ben Evans[]
  • JVM性能魔术-Takipi[]
  • Java与机器——柯克·佩珀丁,马尔蒂恩·韦伯格[]
  • Java应用程序性能测试-Martin Thompson[]
  • 构建内存高效的Java应用程序:实践与挑战-Mitchell,Sevitsky(2009)[]
高级主题和实际使用案例
    优化谷歌的仓库规模计算机:NUMA体验-加利福尼亚大学和谷歌[]/LI>
  • MegaPipe:一种新的可扩展网络I/O编程接口[]
  • 打破现代硬件神话以获得“机械同情”-马丁·汤普森[] (幻灯片)
  • 缓存:更有效地理解、测量和使用CPU缓存-Richard Warburton []
  • JVM会这么做Cliff Click[]
GC调优
  • 热点垃圾收集-调优指南-Martijn Verburg,John Oliver[,]
  • 您的GC日志是否与您对话,G1GC版本[,]
  • Java应用程序性能调优的原则[]
  • 关于JVM性能调优@Twitter-Attila Szegedi[]我所学到的一切
  • 可视化Java GC-Ben Evans[]
交换问题和答案

还有很多很多我需要从我的档案或内部管道中挖掘出来的东西。

William Pugh,《JSR-133:Java内存模型和线程规范》的作者之一,在这里维护了一个关于内存模型的网页:

完整的JSR-133可在此处找到:

同样相关的还有Java语言规范,第17.4节内存模型:


这是一个非常广泛的问题。。。但我同意这是每个java程序员都应该知道的。一组很好的参考资料!您如何看待“Java并发在实践中”作为编写Java内存模型代码的指南?@PatriciaShanahan:我认为Brian Goetz的任何内容都值得了解。我觉得这是一个“仅链接的答案”。而且不是一个好的。你的意思是要理解JMM和GC,我们需要先阅读600页长的pdf和你的30个链接吗?@Matsemann:顺序是这样的。可以说。不,但那会有帮助的。因此,它们很有帮助,正如前面提到的,我经常被问到这个问题(请注意,这也是我的问题),虽然这些资源中的大多数都可以通过相对快速的在线搜索找到,但这有助于整合一些资源,并有一个单一的位置指向人们(这可能会在搜索结果中显示得相当高),以及可以编辑的位置。对我来说已经足够好了,对很多人来说都很有用。我不否认链接的唯一方面和问题真的适合这里。如果必须(或编辑),请随意标记。显然有人标记了该问题。我认为你的链接可能是一个很好的资源,但太多的方式挖掘通过。如果有什么问题的话,社区维基更合适。