JVM
乡村非主流2020
这个作者很懒,什么都没留下…
展开
-
jvm 内存查看与分析工具 2020面试必看
性能测试排查定位问题,分析调优过程中,会遇到要分析gc日志,人肉分析gc日志有时比较困难,相关图形化或命令行工具可以有效地帮助辅助分析。Gc日志参数通过在tomcat启动脚本中添加相关参数生成gc日志-verbose.gc开关可显示GC的操作内容。打开它,可以显示最忙和最空闲收集行为发生的时间、收集前后的内存大小、收集需要的时间等。打开-xx:+ printGCdetails开关,可以详细了解GC中的变化。打开-XX: + PrintGCTimeStamps开关,可以了解这些垃圾收集发生原创 2020-06-09 09:48:03 · 137 阅读 · 0 评论 -
Java虚拟机:JVM内存分代策略 2020面试必看
Java虚拟机:JVM内存分代策略 Java虚拟机根据对象存活的周期不同,把堆内存划分为几块,一般分为新生代、老年代和永久代(对HotSpot虚拟机而言),这就是JVM的内存分代策略。 为什么要分代? 堆内存是虚拟机管理的内存中最大的一块,也是垃圾回收最频繁的一块区域,我们程序所有的对象实例都存放在堆内存中。给堆内存分代是为了提高对象内存分配和垃圾回收的效率。试想一下,如果堆内存没有区域...原创 2020-06-09 09:47:49 · 102 阅读 · 0 评论 -
JVM内存调优 2020面试必看
JVM内存调优 首先需要注意的是在对JVM内存调优的时候不能只看操作系统级别Java进程所占用的内存,这个数值不能准确的反应堆内存的真实占用情况,因为GC过后这个值是不会变化的,因此内存调优的时候要更多地使用JDK提供的内存查看工具,比如JConsole和Java VisualVM。 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数,过多的GC和Full GC是会占用很多的系统资源(主要是CPU),影响系统的吞吐量。特别要关注Full GC,因为它会对整个...原创 2020-06-09 09:47:30 · 1774 阅读 · 0 评论 -
垃圾收集器 2020面试必看
HotSpot虚拟机中的垃圾收集器上面只是介绍了垃圾收集算法的原理,而由于HotSpot虚拟机的垃圾收集是按照分代完成的,所以虚拟机中实现了多个垃圾收集器。这里依据的是JDK 1.7之后的实现,垃圾收集器如下图所示:这张图体现了HotSpot虚拟机中各个垃圾收集器的关系,其中上面的三个垃圾收集器工作在新生代,下面的三个收集器工作在老年代,而G1收集器在两个部分都可以工作。收集器之间的连线表明两个收集器可以协同工作。下面来分别介绍一下各个垃圾收集器的原理、特性和使用场景。(1)Serial收.原创 2020-06-09 09:47:00 · 214 阅读 · 0 评论 -
JVM垃圾收集机制 2020面试必看
介绍下垃圾收集机制(在什么时候,对什么,做了什么)。前面介绍了Java内存结构和HotSpot虚拟机在堆内存中管理对象的过程。不过,在Java程序中对象的创建是非常频繁的,而内存的大小又是有限的,为了内存的重复利用,就需要对内存中的对象进行垃圾收集。其实,这也是Java和C++的一个区别,在Java中可以进行自动的垃圾收集,而C和C++中需要程序员手动回收不再使用的对象。Java中的垃圾收集是虚拟机要考虑的问题。那么以虚拟机的角度考虑,如果要收集虚拟机内存中的垃圾,需要考虑哪些问题呢?·..原创 2020-06-09 09:46:40 · 339 阅读 · 0 评论 -
虚拟机JVM垃圾收集算法 2020面试必看
垃圾收集算法现在我们知道了在哪里收集垃圾以及如何判定一个对象是否是垃圾。接下来就要考虑如何收集垃圾,即垃圾收集算法。不过由于垃圾收集算法涉及到大量的程序细节,所以这里仅仅介绍算法的基本思想及其发展过程。(1)标记-清除算法标记-清除(Mark-Sweep)算法是最基础的收集算法,算法名字表明这个算法的垃圾收集过程包括两步:标记和清除。前面介绍的判定垃圾的过程就是标记过程,在标记过后的清除过程中会清理标记为垃圾的对象。后序的垃圾收集算法都是在这个算法的基础上改进而成的。这个算法有两个不足:一个就是原创 2020-06-08 09:33:31 · 99 阅读 · 0 评论 -
JVM-虚拟机内存区域 2020面试必看
jvm内存区域java虚拟机在执行程序过程中会将内存区分为几个运行时数据区域,根据《java虚拟机规范SE7版》如。jvm运行时数据区域图:程序计数器:是一块较小的内存空间,其作用可以看作是当前线程所执行的字节码的行号指示器,字节码解析器工作时通过改变程序计数器的值来选取下一条需要执行的字节码指令。程序的分支、循环、跳转、异常处理以及线程恢复等基础功能都是依赖程序计数器来完成。Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间片来实现...原创 2020-06-08 09:33:17 · 121 阅读 · 0 评论