当前位置: 首页 > 面试题库 >

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

龚镜
2023-03-14
问题内容

我倾向于让学生或寻求资源的同事提出很多这些问题,因此我希望为他们提供更明确的参考。 最好与社区分享。

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

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

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


问题答案:

记忆基础

  • 每个程序员应该了解的内存知识 -Ulrich Drepper [ PDF ]

Java语言和虚拟机规范

  • Java虚拟机规范 [ Java SE 7的PDF和HTML ]

Java内存模型

  • 编程高级主题:Java内存模型 -Jeremy Manson [ 视频 ]
  • Java内存模型上的资源集合-由Bill Pugh编辑和编译(集合)
  • HotSpot虚拟机中的内存管理 -Sun Microsystems(2006)[ PDF ]
  • 修复Java内存模型 -Brian Goetz,IBM Java开发人员系列()[ 第1 部分,第2部分 ]

Java性能

  • Java性能的9个谬误-Ben Evans [ 视频+幻灯片 ]
  • JVM性能魔术技巧 -Takipi [ 博客+幻灯片 ]
  • Java和机器-Kirk Pepperdine,Martijn Verburg [ 视频+幻灯片 ]
  • Java应用程序性能测试 -Martin Thompson [ 视频+幻灯片 ]
  • 构建内存高效的Java应用程序:实践和挑战 -Mitchell,Sevitsky(2009)[ PDF ]

高级主题和现实用例

  • 优化Google的仓库规模计算机:NUMA体验 -加利福尼亚大学和Google [ PDF ]
  • MegaPipe:可扩展网络I / O的新编程接口 [ Google Doc ]
  • 神话般的现代硬件获得“机械同情” -马丁·汤普森[ PDF ](幻灯片)
  • 缓存:更有效地理解,衡量和使用html" target="_blank">CPU缓存 -Richard Warburton [ 视频+幻灯片 ]
  • JVM是吗? -悬崖点击[ video ]

GC调整

  • 热点垃圾收集-调整指南 -马丁·维尔伯格(Martijn Verburg),约翰·奥利弗(John Oliver)[ 视频,幻灯片pt 1,幻灯片pt 2 ]
  • 是您的GC日志与您对话吗,G1GC版 [ 幻灯片,视频 ]
  • Java应用程序性能调整的原理 [ article ]
  • 我对JVM性能调优@Twitter所学到的一切-Attila Szegedi [ 视频和幻灯片 ]
  • 可视化Java GC -Ben Evans [ 视频+幻灯片 ]

还有很多,我需要从我的档案库或管间资料库中挖掘出来。



 类似资料:
  • 本文向大家介绍浅析Java内存模型与垃圾回收,包括了浅析Java内存模型与垃圾回收的使用技巧和注意事项,需要的朋友参考一下 1、Java内存模型 Java虚拟机在执行程序时把它管理的内存分为若干数据区域,这些数据区域分布情况如下图所示: 程序计数器:一块较小内存区域,指向当前所执行的字节码。如果线程正在执行一个Java方法,这个计数器记录正在执行的虚拟机字节码指令的地址,如果执行的是Native方

  • 问题内容: 我正在读取一个很大的文件,并从每一行中提取文本的一小部分。但是,在操作结束时,我的工作记忆很少。似乎垃圾收集器在读取文件后无法释放内存。 我的问题是:有什么办法释放这种记忆?还是这是JVM错误? 我创建了一个SSCCE来演示这一点。它读取一个1 mb(由于16位编码,在Java中为2 mb)的文件,并从每行中提取一个字符(约4000行,因此大约为8 kb)。测试结束时,仍将使用全部2

  • 1.1 程序计数器 JVM 支持多线程同时执行,每个线程都有自己的程序计数器,线程正在执行 Java 代码,则存放正在执行的指令地址,如果正在执行 C 代码(本地方法),则为空。 1.2 虚拟机栈 线程私有,每个方法创建一个栈帧,用于存储局部变量表(this、参数列表、局部变量)、操作数栈(将下一个指令入栈,执行时出栈)、动态链接、方法出口等信息。方法从调用到执行完成对应栈帧的入栈到出栈,线程内串

  • 问题内容: 据我所知,从JDK 8开始,PermGen将成为Java历史的过去。一切都很好,很快乐……但是新的内存布局会是什么样?这会影响新平台上的GC吗? 问题答案: 在Oracle / Sun JDK8中,PermGen被Metaspace取代,这非常相似。主要区别在于Metaspace可以在运行时扩展。

  • 问题内容: 谁能 建议一本书 (或任何其他来源)来彻底揭示 JVM内存管理和垃圾回收的内部知识 (优化,工作,循环引用,特殊性,各种JVM隐喻的讨论…)? [到目前为止,我发现的是单独的文章,涉及各个方面,但没有重量级的书:)。这里是一些用于实施Hotspot的好材料。] 非常感谢您提供的任何建议。 问题答案: 如果您寻找与 供应商无关的 资源来揭示和彻底描述所有已研究/设计的各种GC算法,我建议

  • 主要内容:1 什么是Java 垃圾回收,2 Java 垃圾回收的优势,3 如何取消对象引用,4 finalize()方法,5 gc()方法,6 Java 垃圾回收的例子1 什么是Java 垃圾回收 在Java中,垃圾意味着未引用的对象。 垃圾回收是自动回收运行时未使用的内存的过程。换句话说,这是销毁未使用对象的一种方法。 我们在C语言中使用free() 函数,在C ++中使用delete()。但是,在Java中它是自动执行的。因此,java提供了更好的内存管理。 2 Java 垃圾回收的优势 它