• 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html
  • 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html

标签:JVM

老年代的垃圾回收算法

之前看过了垃圾回收算法的新生代GC,也是使用的一种比较浪费内存的复制算法,晚上看书又接着往下看了一点,堆 = 新生代+老年代,但是要注意一点老年代不包括永久代(方法区),也就是说堆内存中只有新生代和老年代,而永久代是指的方法区。之前介绍过新生代中的垃圾回收机制了,再来介绍一下老年代的垃圾回收机制里面使用到的算法。 新生代GC:MinorGC……

面试题:你简历中说你擅长JVM调优,给我一个关于Code Cache调优的案例吧。

本文转自公众号:占小狼的博客 问题描述:有业务反馈,线上一个应用运行了一段时间之后,在高峰期之后,突然发现处理能力下降,接口的响应时间变长,但是看Cat上的GC数据,一切都很正常。通过跳板机上机器查看日志,发现一段平时很少见到的日志。JavaHotSpot(TM)64-BitServer VM warning:CodeCa……

JVM核心知识体系

 1.问题1、如何理解类文件结构布局?2、如何应用类加载器的工作原理进行将应用辗转腾挪?3、热部署与热替换有何区别,如何隔离类冲突?4、JVM如何管理内存,有何内存淘汰机制?5、JVM执行引擎的工作机制是什么?6、JVM调优应该遵循什么原则,使用什么工具?7、JPDA架构是什么,如何应用代码热……

95%的技术面试必考的JVM知识点都在这,另附加分思路!

 概述:知识点汇总 jvm的知识点汇总共6个大方向:内存模型、类加载机制、GC垃圾回收是比较重点的内容。性能调优部分偏重实际应用,重点突出实践能力。编译器优化和执行模式部分偏重理论基础,主要掌握知识点。各个部分的内容如下:1>内存模型部分:程序计数器、方法区、堆、栈、本地方法栈……

金三银四面试季节——Java 核心面试技术点-《JVM篇》

描述一下 JVM 的内存区域程序计数器(PC,Program Counter Register)。在 JVM 规范中,每个线程都有它自己的程序计数器,并且任何时间一个线程都只有一个方法在执行,也就是所谓的当前方法。程序计数器会存储当前线程正在执行的 Java 方法的 JVM 指令地址;或者,如果是在执行本地方法,则是未指定值(undefin……

译:谁是JDK8中最快的GC

我们都知道OpenJDK8有好几个垃圾回收算法,比如ParallelGC,CMS,还有G1,那么哪个才是最快的?如果GC算法从Java8中默认的ParallelGC切换到G1会发生什么(JDK9就是把默认GC从ParallelGC切到了G1)?废话不多说,做一个基准测试就知道了,Let’s benchmark it.基准测试方法分别用不……

JVM常用指令

指令码 助记符 说明 0x00 nop 什么都不做 0x01 aconst_null 将null推送至栈顶 0x02 iconst_m1 将int型-1推送至栈顶 0x03 iconst_0 将int型0推送至栈顶 0x04 iconst_1 将int型1推送至栈顶 0x05 iconst_2 将int型2推送至栈顶 0x06……

一个简单java程序的运行全过程

简单说来,一个java程序的运行需要编辑源码、编译生成class文件、加载class文件、解释或编译运行class中的字节码指令。下面有一段简单的java源码,通过它来看一下java程序的运行流程:classPerson{       privateString name;       priv……

JVM发生OOM的 8 种原因、及解决办法

1. Java 堆空间发生频率:5颗星造成原因无法在 Java 堆中分配对象吞吐量增加应用程序无意中保存了对象引用,对象无法被 GC 回收应用程序过度使用 finalizer。finalizer 对象不能被 GC 立刻回收。finalizer 由结束队列服务的守护线程调用,有时 finalizer 线程的处理能力无……

JVM基础面试题及原理讲解

基本问题介绍下 Java 内存区域(运行时数据区)Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么)对象的访问定位的两种方式(句柄和直接指针两种方式)拓展问题String类和常量池8种基本类型的包装类和常量池1 概述对于 Java 程序员来说,在虚拟机自动内存管理机制下,不……

成为 Java GC 专家( 4 ): Apache 的 MaxClients 参数详解

  在第四篇文章中,我们将阐述Apache中MaxClients 参数的重要性,以及他如何在GC发生时,显著地影响整个系统的性能。我将提供几个例子以方便你理解MaxClients 导致的问题。同时我还会说明如何根据系统的内存情况,设置最佳的MaxClients参数值。MaxClients对于系统的影响NHN (译者注:NHN是作者工作的公……

成为 Java GC 专家(1):深入浅出 Java 垃圾回收机制

 对于Java开发人员来说,了解垃圾回收机制(GC)有哪些好处呢?首先可以满足作为一名软件工程师的求知欲,其次,深入了解GC如何工作可以帮你写出更好的Java应用。这仅仅代表我个人的意见,但我坚信一个精通GC的人往往是一个好的Java开发者。如果你对GC的处理过程感兴趣,说明你已经具备较大规模应用的开发经验。如果你曾经想过如何正确的选择GC……

成为 Java GC 专家( 2 ):如何监控 Java 垃圾回收机制

 在本文中,我将解释JVM到底是如何执行垃圾回收处理的。什么是GC监控?垃圾回收收集监控指的是搞清楚JVM如何执行GC的过程,例如,我们可以查明:1.  何时一个新生代中的对象被移动到老年代时,所花费的时间。2.  Stop-the-world 何时发生的,持续了多长时间。GC监控是为了鉴别JVM是否在高效地执行GC,以及是否……

豆瓣评分8.9!这本原生中文版的JVM宝典,你还没读么?

每个使用Java的开发人员都知道,JRE最重要的元素就是Java虚拟机(JVM),但许多开发人员对于JVM是如何运行的并不了解,因为就算你没有深入了解JVM,你一样可以开发出一些优秀的应用和库,不过要是你了解了JVM,那对你理解Java就会有很大的帮助在国内,有关Java API、Java语言语法及第三方框架的技术资料和书籍非常多,但有关J……

成为 Java GC 专家( 3 ): 如何优化 Java 垃圾回收机制

 为什么需要优化GC或者说的更确切一些,对于基于Java的服务,是否有必要优化GC?应该说,对于所有的基于Java的服务,并不总是需要进行GC优化,但前提是所运行的基于Java的系统,包含了如下参数或行为:已经通过 -Xms 和–Xmx 设置了内存大小包含了 -server 参数系统中没有超时日志等错误日志换句话……

《深入理解java虚拟机-高效并发》读书笔记

Java内存模型与线程概述  多任务处理在现代计算机操作系统中几乎已是一项必备的功能,多任务运行是压榨手段,就如windows一样,我们使劲的压榨它运行多个任务,俱要high又要耍。并发则是另外一种更具体的应用场景。每秒事物处理数(Transactions per Second,tps)是最重要的指标。开发人员应该了解与运用并发。硬件的效率……

触摸Java常量池

java常量池是一个经久不衰的话题,也是面试官的最爱,题目花样百出,这次好好总结一下。理论先拙劣的表达一下jvm虚拟内存分布:程序计数器是jvm执行程序的流水线,存放一些跳转指令,这个太高深,不懂。本地方法栈是jvm调用操作系统方法所使用的栈。虚拟机栈是jvm执行java代码所使用的栈。方法区存放了一些常量、静态变量、类信息等,可……

深入探索 Java 热部署

简介在 Java 开发领域,热部署一直是一个难以解决的问题,目前的 Java 虚拟机只能实现方法体的修改热部署,对于整个类的结构修改,仍然需要重启虚拟机,对类重新加载才能完成更新操作。对于某些大型的应用来说,每次的重启都需要花费大量的时间成本。虽然 osgi 架构的出现,让模块重启成为可能,但是如果模块之间有调用关系的话,这样的操作依然会让应……

详解Java类的生命周期

引言最近有位细心的朋友在阅读笔者的文章时,对java类的生命周期问题有一些疑惑,笔者打开百度搜了一下相关的问题,看到网上的资料很少有把这个问题讲明白的,主要是因为目前国内java方面的教材大多只是告诉你“怎样做”,但至于“为什么这样做”却不多说,所以造成大家在基础和原理方面的知识比较匮乏,所以笔者今天就斗胆来讲一下这个问题,权当抛砖引玉,希望对……

面试重点:Java虚拟机常见问题详解

一、Java引用的四种状态:强引用:用的最广。我们平时写代码时,new一个Object存放在堆内存,然后用一个引用指向它,这就是强引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。软引用:……

探索StringTable提升YGC性能

探索StringTable提升YGC性能 很久很久以前看过笨神的一篇文章JVM源码分析之String.intern()导致的YGC不断变长,其原因是YGC过程需要对StringTable做扫描,而String.intern()就是在StringTable中保存这个对象的引用,如果String.intern()添加越来越多不同的对象,那么Str……

一张图看懂JVM之类装载系统

导读在之前的文章中,我们通过一张图的方式(图?)整体上了解了JVM的结构,并重点讲解了JVM的内存结构、内存回收算法及回收器方面的知识。收到了不少读者朋友们的反馈和指正,在这里作者向这些提出中肯建议的读者朋友们表示感谢,谢谢你们的支持。在今天的文章中将主要和大家一起探讨关于类装载子系统的内容。我们知道,Java源代码(.java文件)需要……

Java类加载的那些事

前言Java源代码被编译成class字节码,最终需要加载到虚拟机中才能运行。整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载7个阶段。 加载1、通过一个类的全限定名获取描述此类的二进制字节流; 2、将这个字节流所代表的静态存储结构保存为方法区的运行时数据结构; 3、在java堆中生成一个代表这个类的java.lang.C……

深入理解Java虚拟机到底是什么

什么是Java虚拟机?作为一个Java程序员,我们每天都在写Java代码,我们写的代码都是在一个叫做Java虚拟机的东西上执行的。但是如果要问什么是虚拟机,恐怕很多人就会模棱两可了。在本文中,我会写下我对虚拟机的理解。因为能力所限,可能有些地方描述的不够欠当。如果你有不同的理解,欢迎交流。我们都知道java程序必须在虚拟机上运行。那么虚……

  • 精品技术教程
  • 编程资源分享
  • 问答交流社区
  • 极客文库知识库

客服QQ


QQ:2248886839


工作时间:09:00-23:00