精华内容
下载资源
问答
  • JVM调优面试

    2019-10-10 21:24:33
    1、JVM调优主要涉及两方面:堆大小的设置,垃圾回收期的选择,首先要对自己对系统有个定位,是吞吐量优先型系统还是响应优先型系统。 吞吐量优先型系统,一般建议设置一个大的年轻代和一个小的老年代,这样可以尽...

    1、JVM调优主要涉及两方面:堆大小的设置,垃圾回收期的选择,首先要对自己对系统有个定位,是吞吐量优先型系统还是响应优先型系统。

        吞吐量优先型系统,一般建议设置一个大的年轻代和一个小的老年代,这样可以尽可能回收掉大部分短期对象,而年老代尽存放长期存活对象。这种系统建议使用吞吐量优先的并行收集器(UseParallelGC),-XX:+UseAdaptiveSizePolicy(大小自适应策略):设置此选项后,并行收集器会自动选择年轻代区大小和相应的Survivor区比例,以达到目标系统规定的最低相应时间或者收集频率等,此值建议使用并行收集器时,一直打开。-XX:MaxGCPauseMillis=100:设置每次年轻代垃圾回收的最长时间,如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值。

        响应优先型系统,响应时间优先的应用:尽可能设大,直到接近系统的最低响应时间限制(根据实际情况选择)。在此种情况下,年轻代收集发生的频率也是最小的。同时,减少到达年老代的对象。建议使用(UseConcMarkSweepGC),新生代采用并行收集器(ParNew),老年代采用并发收集器(CMS)

    由于CMS采用的是标记清理算法,因此会有碎片,建议设置以下参数

    CMSFullGCsBeforeCompaction:由于并发收集器不对内存空间进行压缩、整理,所以运行一段时间以后会产生“碎片”,使得运行效率降低。此值设置运行多少次GC以后对内存空间进行压缩、整理。
    -XX:+UseCMSCompactAtFullCollection:打开对年老代的压缩。可能会影响性能,但是可以消除碎片

     

    当然堆大小我们也要考虑其他因素:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制,建议3.5G

    注:如果满足下面的指标,则一般不需要进行GC:

    • Minor GC执行时间不到50ms;
    • Minor GC执行不频繁,约10秒一次;
    • Full GC执行时间不到1s;
    • Full GC执行频率不算频繁,不低于10分钟1次;

    我曾经的公司,碰到过服务运行超过14h直接死机的问题,头天下午压测,第二天上午服务自动重启了,按照当时习惯,新服务需要压力测试满12h,原则上我的服务通过测试,由于测试环境复杂,所有开发都可以登陆而且脚本很多,qa认为可能是有脚本误杀了,但是当时离上线deadline时间还早,于是决定再压力一次,成功复现,最后查看jvm发现每次fullgc之后o区总是会多一点,jmap打印内存栈发现char对象使用逐渐增大,最后撑满内存, 最后定位到调用JNI发生内存泄露,解决了这个问题。这只是简单的一次,在那家公司,由于服务偏算法而且流量很高,碰到过很多这种问题。还有一次,压力测试loadrunner图像显示每隔一段时间的点上响应时间立刻下降,过2s又恢复正常,规律性很强,通过jstat发现频繁生成大对象直接进入老年代,老年代很快撑大触发full gc回收,回收时间过长造成服务暂停明显,立刻反应到压测的响应上。解决的办法是调大年轻代,让大对象可以在年轻代触发yong gc,调整大对象在年轻代的回收频次,尽可能保证大对象在年轻代回收,减小老年代缩短回收时间,服务果然稳定下来。
    ————————————————
    版权声明:本文为CSDN博主「happym_m」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/lelemom/article/details/83545854

    展开全文
  • 一、JVM 内存区域划分1.程序计数器(线程私有)程序计数器(Program Counter Register),也有称作为 PC 寄存器。保存的是程序当前执行的指令的地址(也可以说保存下一条指令的所在存储单元的地址),当 CPU 需要执行指令...

    一、JVM 内存区域划分

    1.程序计数器(线程私有)

    程序计数器(Program Counter Register),也有称作为 PC 寄存器。保存的是程序当前执行的指令的地址(也可以说保存下一条指令的所在存储单元的地址),当 CPU 需要执行指令时,需要从程序计数器中得到当前需要执行的指令所在存储单元的地址,然后根据得到的地址获取到指令,在得到指令之后,程序计数器便自动加 1 或者根据转移指针得到下一条指令的地址,如此循环,直至执行完所有的指令。也就是说是用来指示执行哪条指令的。

    由于在 JVM 中,多线程是通过线程轮流切换来获得 CPU 执行时间的,因此,在任一具体时刻,一个 CPU 的内核只会执行一条线程中的指令,因此,为了能够使得每个线程都在线程切换后能够恢复在切换之前的程序执行位置,每个线程都需要有自己独立的程序计数器,并且不能互相被干扰,否则就会影响到程序的正常执行次序。因此,可以这么说,程序计数器是每个线程所私有的。

    在 JVM 规范中规定,如果线程执行的是非 native 方法,则程序计数器中保存的是当前需要执行的指令的地址;如果线程执行的是 native 方法,则程序计数器中的值是 undefined。

    由于程序计数器中存储的数据所占空间的大小不会随程序的执行而发生改变,因此,对于程序计数器是不会发生内存溢出现象(OutOfMemory)的。

    异常情况:

    不存在

    2.Java 栈(线程私有)

    3.本地方法栈(线程私有)

    4.堆(线程共享)

    5.方法区(线程共享)

    6.直接内存(线程共享)

    dac08c14643e

    image.png

    二、JVM 执行子系统

    1.Class 类文件结构

    1.1 Java 跨平台的基础

    各种不同平台的虚拟机与所有平台都统一使用的程序存储格式——字节码(ByteCode)是构成平台无关性的基石,也是语言无关性的基础。Java 虚拟机不和包括 Java 在内的任何语言绑定,它只与“Class 文件”这种特定的二进制文件格式所关联,Class 文件中包含了 Java虚拟机指令集和符号表以及若干其他辅助信息。

    1.2 Class 类的本质

    任何一个 Class 文件都对应着唯一一个类或接口的定义信息,但反过来说,Class 文件实际上它并不一定以磁盘文件的形式存在。Class 文件是一组以 8 位字节为基础单位的二进制流。

    1.3 Class 文件格式

    各个数据项目严格按照顺序紧凑地排列在 Class 文件之中,中间没有添加任何分隔符,这使得整个 Class 文件中存储的内容几乎全部是程序运行的必要数据,没有空隙存在。Class 文件格式采用一种类似于 C 语言结构体的伪结构来存储数据,这种伪结构中只有两种数据类型:无符号数和表。

    无符号数属于基本的数据类型,以 u1、u2、u4、u8 来分别代表 1 个字节、2 个字节、4 个字节和 8 个字节的无符号数,无符号数可以用来描述数字、索引引用、数量值或者按照 UTF-8编码构成字符串值。

    表是由多个无符号数或者其他表作为数据项构成的复合数据类型,所有表都习惯性地以“_info”结尾。表用于描述有层次关系的复合结构的数据,整个 Class 文件本质上就是一张表。

    2.字节码指令

    2.1 加载和存储指令

    2.2 运算或算术指令

    2.3 类型转换指令

    2.4 创建类实例的指令

    2.5 创建数组的指令

    2.6 访问字段指令

    2.7 数组存取相关指令

    2.8 检查类实例类型的指令

    2.9 操作数栈管理指令

    2.10 控制转移指令

    2.11 方法调用指令

    dac08c14643e

    image.png

    2.12 方法返回指令

    2.13 异常处理指令

    2.14 同步指令

    3.类加载机制

    4.类加载器

    4.1 系统的类加载器

    4.2 双亲委派模型

    5.Tomcat 类加载机制

    6.方法调用详解

    6.1 解析

    6.2 静态分派

    6.3 动态分派

    6.4 基于栈的字节码解释执行引擎

    dac08c14643e

    image.png

    三.垃圾回收器和内存分配策略

    1.Java 中是值传递还是引用传递?

    2.引用类型

    3.基本垃圾回收算法

    3.1.1 引用计数(Reference Counting):

    比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为 0 的对象。此算法最致命的是无法处理循环引用的问题。

    3.1.2 可达性分析清理

    dac08c14643e

    image.png

    标记-清除(Mark-Sweep):此算法执行分两阶段。第一阶段从引用根节点开始标记所有被引用的对象,第二阶段遍历整个堆,把未标记的对象清除。此算法需要暂停整个应用,同时,会产生内存碎片。

    dac08c14643e

    image.png

    复制(Copying): 此算法把内存空间划为两个相等的区域,每次只使用其中一个区域。垃圾回收时,遍历当前使用区域,把正在使用中的对象复制到另外一个区域中。次算法每次只处理正在使用中的对象,因此复制成本比较小,同时复制过去以后还能进行相应的内存整理,不会出现“碎片”问题。当然,此算法的缺点也是很明显的,就是需要两倍内存空间。

    dac08c14643e

    image.png

    标记-整理(Mark-Compact):此算法结合了“标记-清除”和“复制”两个算法的优点。也是分两阶段,第一阶段从根节点开始标记所有被引用对象,第二阶段遍历整个堆,清除标记对象,并未标记对象并且把存活对象“压缩”到堆的其中一块,按顺序排放。此算法避免了“标记-清除”的碎片问题,同时也避免了“复制”算法的空间问题。

    3.1 按照基本回收策略分

    3.2 按分区对待的方式分

    3.3 按系统线程分

    4.分代处理垃圾

    5.JAVA 中垃圾回收 GC 的类型

    dac08c14643e

    image.png

    四、编写高效优雅 Java 程序

    1.面向对象

    1.1 构造器参数太多怎么办?

    用 builder 模式,用在

    (1)5 个或者 5 个以上的成员变量

    (2)参数不多,但是在未来,参数会增加

    Builder 模式:

    属于对象的创建模式,一般有

    (1)抽象建造者:一般来说是个接口,包含

    1)建造方法,建造部件的方法(不止一个)

    2)返回产品的方法

    (2) 具体建造者

    (3) 导演者,调用具体的建造者,创建产品对象

    (4)产品,需要建造的复杂对象

    对于客户端,创建导演者和具体建造者,并把具体建造者交给导演者,然后由客户端通知导演者操纵建造者进行产品的创建。

    在实际的应用过程中,有时会省略抽象建造者和导演者。

    1.2 不需要实例化的类应该构造器私有

    1.3 不要创建不必要的对象

    1.4 避免使用终结方法

    1.5 使类和成员的可访问性最小化

    1.6 使可变性最小化

    1.7 复合优先于继承

    1.8 接口优于抽象类

    2.方法

    2.1 可变参数要谨慎使用

    2.2 返回零长度的数组或集合,不要返回 null

    2.3 优先使用标准的异常

    3.通用程序设计

    dac08c14643e

    image.png

    五、性能优化

    一个 web 应用不是一个孤立的个体,它是一个系统的部分,系统中的每一部分都会影响整

    个系统的性能

    1.常用的性能评价/测试指标

    1.1 响应时间

    提交请求和返回该请求的响应之间使用的时间,一般比较关注平均响应时间。

    常用操作的响应时间列表:

    dac08c14643e

    image.png

    1.2 并发数

    同一时刻,对服务器有实际交互的请求数。

    和网站在线用户数的关联:1000 个同时在线用户数,可以估计并发数在 5%到 15%之间,也就是同时并发数在 50~150 之间。

    1.3 吞吐量

    对单位时间内完成的工作量(请求)的量度

    1.4 关系

    系统吞吐量和系统并发数以及响应时间的关系:

    理解为高速公路的通行状况:

    吞吐量是每天通过收费站的车辆数目(可以换算成收费站收取的高速费),并发数是高速公路上的正在行驶的车辆数目,响应时间是车速。车辆很少时,车速很快。但是收到的高速费也相应较少;

    随着高速公路上车辆数目的增多,车速略受影响,但是收到的高速费增加很快;

    随着车辆的继续增加,车速变得越来越慢,高速公路越来越堵,收费不增反降;

    如果车流量继续增加,超过某个极限后,任务偶然因素都会导致高速全部瘫痪,车走不动,当然后也收不着,而高速公路成了停车场(资源耗尽)。

    2.常用的性能优化手段

    2.1 避免过早优化

    2.2 进行系统性能测试

    2.3 寻找系统瓶颈,分而治之,逐步优化

    2.4 前端优化常用手段

    dac08c14643e

    image.png

    3 应用服务性能优化

    3.1 缓存

    3.1.1 缓存的基本原理和本质

    3.1.2 合理使用缓冲的准则

    3.1.3 分布式缓存与一致性哈希

    3.2 异步

    3.2.1 同步和异步,阻塞和非阻塞

    3.2.2 常见异步的手段

    3.3 集群

    dac08c14643e

    image.png

    3.4 应用相关

    3.4.1 代码级别

    3.4.2 并发编程

    3.4.3 资源的复用

    3.4.4 JVM

    3.4.5 GC 调优

    3.4.6 调优实战

    3.4.7 存储性能优化

    展开全文
  • -XX:+PrintGC输出形式:[GC 118250K->113543K(130112K), 0.0094143 secs][Full GC 121376K->10414K(130112K), 0.0650971 secs]-XX:+PrintGCDetails输出形式:[GC [DefNew: 8614K->781K(9088K), 0.0123035 ...

    -XX:+PrintGC

    输出形式:[GC 118250K->113543K(130112K), 0.0094143 secs]

    [Full GC 121376K->10414K(130112K), 0.0650971 secs]

    -XX:+PrintGCDetails

    输出形式:[GC [DefNew: 8614K->781K(9088K), 0.0123035 secs] 118250K->113543K(130112K), 0.0124633 secs]

    [GC [DefNew: 8614K->8614K(9088K), 0.0000665 secs][Tenured: 112761K->10414K(121024K), 0.0433488 secs] 121376K->10414K(130112K), 0.0436268 secs]

    -XX:+PrintGCTimeStamps -XX:+PrintGC:PrintGCTimeStamps可与上面两个混合使用

    输出形式:11.851: [GC 98328K->93620K(130112K), 0.0082960 secs]

    -XX:+PrintGCApplicationConcurrentTime:打印每次垃圾回收前,程序未中断的执行时间。可与上面混合使用

    输出形式:Application time: 0.5291524 seconds

    -XX:+PrintGCApplicationStoppedTime:打印垃圾回收期间程序暂停的时间。可与上面混合使用

    输出形式:Total time for which application threads were stopped: 0.0468229 seconds

    -XX:PrintHeapAtGC:打印GC前后的详细堆栈信息

    输出形式:

    34.702: [GC {Heap before gc invocations=7:

    def new generation   total 55296K, used 52568K [0x1ebd0000, 0x227d0000, 0x227d0000)

    eden space 49152K,  99% used [0x1ebd0000, 0x21bce430, 0x21bd0000)

    from space 6144K,  55% used [0x221d0000, 0x22527e10, 0x227d0000)

    to   space 6144K,   0% used [0x21bd0000, 0x21bd0000, 0x221d0000)

    tenured generation   total 69632K, used 2696K [0x227d0000, 0x26bd0000, 0x26bd0000)

    the space 69632K,   3% used [0x227d0000, 0x22a720f8, 0x22a72200, 0x26bd0000)

    compacting perm gen  total 8192K, used 2898K [0x26bd0000, 0x273d0000, 0x2abd0000)

    the space 8192K,  35% used [0x26bd0000, 0x26ea4ba8, 0x26ea4c00, 0x273d0000)

    ro space 8192K,  66% used [0x2abd0000, 0x2b12bcc0, 0x2b12be00, 0x2b3d0000)

    rw space 12288K,  46% used [0x2b3d0000, 0x2b972060, 0x2b972200, 0x2bfd0000)

    34.735: [DefNew: 52568K->3433K(55296K), 0.0072126 secs] 55264K->6615K(124928K)Heap after gc invocations=8:

    def new generation   total 55296K, used 3433K [0x1ebd0000, 0x227d0000, 0x227d0000)

    eden space 49152K,   0% used [0x1ebd0000, 0x1ebd0000, 0x21bd0000)

    from space 6144K,  55% used [0x21bd0000, 0x21f2a5e8, 0x221d0000)

    to   space 6144K,   0% used [0x221d0000, 0x221d0000, 0x227d0000)

    tenured generation   total 69632K, used 3182K [0x227d0000, 0x26bd0000, 0x26bd0000)

    the space 69632K,   4% used [0x227d0000, 0x22aeb958, 0x22aeba00, 0x26bd0000)

    compacting perm gen  total 8192K, used 2898K [0x26bd0000, 0x273d0000, 0x2abd0000)

    the space 8192K,  35% used [0x26bd0000, 0x26ea4ba8, 0x26ea4c00, 0x273d0000)

    ro space 8192K,  66% used [0x2abd0000, 0x2b12bcc0, 0x2b12be00, 0x2b3d0000)

    rw space 12288K,  46% used [0x2b3d0000, 0x2b972060, 0x2b972200, 0x2bfd0000)

    }

    , 0.0757599 secs]

    -Xloggc:filename:与上面几个配合使用,把相关日志信息记录到文件以便分析。

    展开全文
  • ​1. 调优时机:a. heap 内存(老年代)持续上涨达到设置的最大内存值;b. Full GC 次数频繁;c....d....e....f....2. 调优原则:a. 多数的Java应用不需要在服务器上进行JVM优化;b. 多数导致GC问题的Java应用,都不是因...

    012a0e95f587e20cbbc812888bb26770.png

    ​1. 调优时机:

    a. heap 内存(老年代)持续上涨达到设置的最大内存值;

    b. Full GC 次数频繁;

    c. GC 停顿时间过长(超过1秒);

    d. 应用出现OutOfMemory 等内存异常;

    e. 应用中有使用本地缓存且占用大量内存空间;

    f. 系统吞吐量与响应性能不高或下降。

    2. 调优原则:

    a. 多数的Java应用不需要在服务器上进行JVM优化;

    b. 多数导致GC问题的Java应用,都不是因为我们参数设置错误,而是代码问题;

    c. 在应用上线之前,先考虑将机器的JVM参数设置到最优(最适合);

    d. 减少创建对象的数量;

    e. 减少使用全局变量和大对象;

    f. JVM优化是到最后不得已才采用的手段;

    g. 在实际使用中,分析GC情况优化代码比优化JVM参数更好;

    3. 调优目标:

    a. GC低停顿;

    b. GC低频率;

    c. 低内存占用;

    d. 高吞吐量;

    4. 调优步骤:

    a. 分析GC日志及dump文件,判断是否需要优化,确定瓶颈问题点;

    b. 确定jvm调优量化目标;

    c. 确定jvm调优参数(根据历史jvm参数来调整);

    d. 调优一台服务器,对比观察调优前后的差异;

    e. 不断的分析和调整,知道找到合适的jvm参数配置;

    f. 找到最合适的参数,将这些参数应用到所有服务器,并进行后续跟踪。

    小程序→IT面试题练习:一个可以充电的面试题库。

    b632037f47c67e4fe096b90363eff79e.png

    展开全文
  • JVM内存调优JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数。1.Full GC会对整个堆进行整理,包括Young、Tenured和Perm。Full GC因为需要对整个堆进行回收,所以比较慢,因此应该尽可能减少Full GC...
  • jvm调优面试怎么答?

    万次阅读 2019-09-18 06:39:52
    一.jvm分为年轻代,年老代,持久代1.年轻代:年轻代主要存放新创建的对象,垃圾回收会比较频繁。(稍微讲细一点就是即可,年轻代分成Eden Space和Suvivor Space。当对象在堆创建时,将进入年轻代的Eden Space。垃圾...
  • 最初:c、c++ Java诞生的时候c、c++横行,想要立足,必须要调用c、c、++的程序 它在内存区域中专门开辟了一块标记区域:native method stack,等级native方法 JVM调优 在一个项目中,突然出现了OOM故障,那么该如何...
  • JVM194.说一下 jvm 的主要组成部分?及其作用?类加载器(ClassLoader)运行时数据区(Runtime Data Area)执行引擎(Execution Engine)本地库接口(Native Interface)组件的作用:首先通过类加载器(ClassLoader)会把Java...
  • 由于内容过多答案我就不写了,需要答案的小伙伴可以免费领取,包含spring、并发、数据库、Redis、分布式、dubbo、JVM、微服务等方面总结,下图是部分截图,需要的话https://www.xiaoyuani.com/,暗号CSDN。...
  • 由于内容过多答案我就不写了,需要答案的小伙伴可以免费领取,包含spring、并发、数据库、Redis、分布式、dubbo、JVM、微服务等方面总结。下图是部分截图,需要的朋友可以点击:点这个,点这个,暗号:z...
  • 不管初入职场还是跳槽升职,JVM更是面试时的必考题。如果不懂JVM的话,薪酬会非常吃亏(近70%的面试者挂在JVM上了)。掌握了JVM机制,就等于学会了深层次解决问题的方法。只有熟悉底层虚拟机的运行机制,才能快速通过...
  • 现在除了一些有工作和开发经验的大神,基本很少有人在简历上敢写“精通 JVM 调优,有过 JVM 调优经验”,因为应聘者如果写这句话就意味着你的面试将会是很“难过”的,面试官会变着法的问你如何进行 JVM 系列调优,...
  • 系统和JVM调优,深入浅出,简单实用。 配有视频,资料,代码,可以结合视频自己操作。 足够应付面试场景,非常适合面试突击。
  • JAVA面试题库-JVM面试题-JVM调优经验前言JVM调优经验 前言 再阅读此文之前,一定要先了解GC垃圾回收机制 JVM调优经验 JVM配置方面,一般情况可以先用默认配置,初始参数可以保证一般的应用跑的比较稳定了。 在测试...
  • 原标题:【Java面试题第一期】有没有jvm调优经验?调优方案有哪些? 1. 调优时机:a. heap 内存(老年代)持续上涨达到设置的最大内存值;b. Full GC 次数频繁;c. GC 停顿时间过长(超过1秒);d. 应用出现OutOfMemory ...
  • java--------jvm调优

    2019-08-14 22:11:27
    jvm调优 jvm调优 jvm调优面试 jvm参数调优面试 jvm调优面试
  • JVM调优

    2020-03-16 17:58:43
    架构师面试-JVM调优 深入浅出JVM调优,看完你就懂
  • 常用的 JVM 调优的参数都有哪些? -Xms2g:初始化推大小为 2g; -Xmx2g:堆最大内存为 2g; -XX:NewRatio=4:设置年轻的和老年代的内存比例为 1:4; -XX:SurvivorRatio=8:设置新生代 Eden 和 Survivor 比例为 8:2...
  • 如何应对面试官的JVM调优问题

    千次阅读 2020-08-07 14:45:54
    我猜你肯定是为了面试,现在很多公司都会问这个,虽然你工作了N年JVM调优可能都不会接触到,但我觉得还是有考察的必要的。因为很多时候我们考察一个人不光要考察他的硬实力,还要看他有没有持续学习、深入研究的精神...
  • JVM调优.pptx

    2020-09-10 22:46:15
    1.深入剖析java虚拟机内存模型 2.JVM垃圾收集机制解密 3.常见JVM诊断工具调优实战 4.亿级流量电商网站JVM参数调优...5.日均百万级交易系统JVM调优实战 6.Java虚拟机常见面试题剖析 7.动手实战优化自己公司线上系统JVM
  • JVM面试资料。 JVM结构:类加载器,执行引擎,本地方法接口,本地内存结构; 四大垃圾回收算法:复制算法、标记-清除算法、标记-整理算法、分代收集算法 ...JVM调优:命令行指令,设置堆内存大小的参数
  • JVM调优概述

    2021-02-05 14:04:03
    JVM调优概述 1. 大厂面试题 如何进行JVM调优?有哪些方法? 如何理解内存泄漏问题?有哪些情况会导致内存泄漏?如何解决? 字节跳动: 三面:JVM如何调优、参数怎么调? 拼多多: 从SQL、JVM、架构、数据库四个方面...
  • 什么是JVMJVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java语言的一个非常重要的特点就是与...
  • 进阶面试JVM 调优

    2020-11-14 13:11:35
    相信越来越多的同学在面试中都会被问过有没有 JVM 调优的问题,随着 IT人员越来越多,面试也越来越难,JVM 的知识无疑是难点之一,如果能够回答上相关问题,肯定能大大提高面试的通过率。 不少同学肯定也看过 JVM ...
  • jvm调优到底是要干什么

    万次阅读 多人点赞 2018-10-30 17:40:30
    面试总问的jvm调优到底是要干什么 请注意,jvm调优,调的是稳定,并不能带给你性能的大幅提升。服务稳定的重要性就不用多说了,保证服务的稳定,gc永远会是Java程序员需要考虑的不稳定因素之一。复杂和高并发下的...
  • jvm调优

    2017-06-06 22:32:30
    今天有个电话面试 ...jvm调优,怎么保证吞吐量有限或停顿时间,原理是什么,多线程回收、单线程回收等 内存泄漏 吞吐量与停顿时间,如鱼和熊掌,不能兼得,优先选择哪一个,要看具体的业务场景,
  • JVM调优案例详解及面试

    千次阅读 2020-06-14 16:33:20
    JVM调优目的 减少STW (Stop The Work),减少full gc的次数和缩短full gc的时间 一个4核8G的订单系统,假设给JVM运行内存为3个G,按照上图比例老年代可分2G,Eden 800M,S0,S1各100M,线程运行每秒产生60M对象,大概运行13...
  • JVM调优,GC算法汇总

    2018-11-28 15:33:16
    JVM调优,GC算法汇总,面试必问,早点准备,很好的资料!

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,632
精华内容 652
关键字:

jvm调优面试