`

jvm调优

 
阅读更多

 

1.       方法区又叫永久区,里面放的是.class文件的信息、静态变量、字符串常量、常量池等信息。单词以perm开头

2.       我们能优化的部分是堆内存。

3.       还有堆内存、栈内存。我们能优化的地方是堆内存。

4.       Java内存结构图: 堆内存是在java内存结构中占的比例比较大的

 

5.       一个线程对应一个栈,一个方法对应一个栈针

6.       下面我们来看堆内存

 

7.       堆内存分为两大块,即新生代和老年代。新生代又分三个, survivor(色外我):幸存者的意思,被垃圾回收之后还幸运的存活下来了。Eden(一电):伊甸园

8.       在我们new对象的时候,会把特别大的对方放在老年代中,其他的对象放在新生代。

9.       垃圾回收过程:经过一次GC(垃圾回收)后,假如某个对象1还有指针在引用它,那么这个对象1就会从eden内存跑到survivor1内存中。现在第二次GC,此时对象1survivor1跑到survivor2中,同时第二次GC没有被回收的对象也被放在survivor2中。此时survivor1内存中是空的了。现在开始第三次GC,会把survivor2中的对象放到survivor1中,并把eden内存中没有被回收的对象也放到survivor1中。此时survivor2内存又空了。依次这样迭代下去。survivor1survivor2的角色是互换的。

10.   总结一下:

   .edensurvivor1survivor2都是内存区域

   . survivor1survivor2的角色其实是来回互换的。即from—>totoàfrom

11.   上面我们介绍了垃圾是如果被回收的,那么问题来了,GC的时候是如何确定这个对象是垃圾的。

12.   垃圾:①没有被引用的对象是垃圾。②两个对象互相引用,但是除了彼此引用之外没有其他引用,这就是一对垃圾。

13.   强引用:我们平时new的对象,我们平时用的都是强引用。

14.   软引用、弱引用、虚引用

15.   如何确定垃圾:

   引用计数。但是这种办法会有循环引用的问题(多个对象互相引用)

   正向可达:从roots(根)对象开始计算,可以到达的对象都不是垃圾,其他的都是垃圾。

 

16.   垃圾回收算法:现在已经确定什么是垃圾了,就开始回收了。

   标记清除法:

我们通过正向可达,可以找出哪些不是垃圾。图中三种颜色,也已经标明哪些是存活的对象,哪些是回收的对象了。绿色的地方表示内存是空的。

标记清除的缺点:内存不连续了。假如我现在来了个特别大的对象的时候,可能会发现没有位置了。此时就会发生full gc(大型回收)

 

   复制算法

定义:把内存分成两部分,上半部分和下半部分各占两行。先用上半部分。在垃圾回收的时候通过正向可达,可以找出存活下面的对象。灰色表示垃圾回收的时候存活下来的对象。存活下面的对象会复制到下面两行当中,此时是连续的了。

第二次产生新对象的时候,会放入下半部分。当第二次垃圾回收的时候,又会把下半部分存活下来的对象在放在上半部分中。最终的效果就是在上下部分来回互换。

复制算法的缺点:复制算法解决了标记清除算法的缺点,但是复制算法也有缺点,缺点就是浪费内存。假如堆内存是4G,那么我们只能有2G能用。

注意:新生代中的survivor1survivor2之间,他们两个之间用的是复制算法传递对象。特点:占用的内存空间不是很大,效率也高。

 

   标记压缩

定义:把存活下来的对象都压缩到一起,这种效率比复制算法稍微低一点。这个算法是用在老年代中的。特点就是垃圾少。老年代的对象可能很久都不会被垃圾回收。

 

17.   总结这个过程:我们的对象创建后都是在堆内存中的,堆内存中包含新生代老年代等,新生代与老年代的内存比例是1:3,但是可以调整。一个对象如果特别大,创建之后就直接进入老年代这个内存中(我们可以设置对象的大小,当对象大于某个值的时候就进入老年代)。如果对象不是很大就进入eden内存中。经过一次gc垃圾回收之后,95%左右的对象都会被回收掉。我们把没有被回收的(即:5%的部分)对象放到survivor1Edensurvivor1: survivor2=8:1:1

 

第二:jvm的参数

1.       Jvm的参数有三种,如下图:

 

第三:java对象的分配

分享到:
评论

相关推荐

    推荐一些JVM原理,JVM调优,JVM内存模型,JAVA并发 电子书1

    标题中提到了JVM原理、JVM调优、JVM内存模型和JAVA并发,这些都是Java虚拟机(JVM)相关的核心概念。JVM是运行Java字节码的虚拟计算机,为Java提供了一个跨平台的环境,确保Java程序可以在不同的操作系统上运行而...

    JVM调优实践 ⼀、JVM调优准备⼯作 实验报告 pdf

    在JVM调优实践中,了解各个运行时数据区的工作原理至关重要。以下是对这些区域的详细解析: 1. **虚拟机栈**:每个线程都有一个独立的虚拟机栈,用于存储方法调用时的栈帧。栈帧中包含局部变量表(存储方法中的变量...

    JVM调优总结

    1.1 JVM调优总结-序3 1.2 JVM调优总结(一)-- 一些概念 4 1.3 JVM调优总结(二)-一些概念 7 1.4 JVM调优总结(三)-基本垃圾回收算法 9 1.5 JVM调优总结(四)-垃圾回收面临的问题 12 1.6 JVM调优总结(五)-分代...

    马士兵jvm调优笔记.docx

    ### 马士兵JVM调优笔记知识点梳理 #### 一、Java内存结构 Java程序运行时,其内存被划分为几个不同的区域,包括堆内存(Heap)、方法区(Method Area)、栈(Stack)、程序计数器(Program Counter Register)以及...

    JVM调优.pdf

    ### JVM调优详解 #### 一、JVM调优概述 在现代软件开发中,Java虚拟机(JVM)作为Java应用程序的运行环境,对于提高应用程序的性能至关重要。JVM调优是指通过调整JVM的各种参数来优化Java应用程序的运行效率,减少...

    JVM调优工具命令详解.pdf

    在现代的软件开发与运行环境中,Java虚拟机(JVM)的性能调优是非常重要的一环,特别是在处理大型应用程序或者服务时,合适的JVM调优能够显著提升系统性能和稳定性。本篇文档详细介绍了JVM调优工具的命令使用及其...

    monkey老师的jvm 调优

    《Monkey老师的JVM调优深度解析》 在Java开发领域,JVM(Java Virtual Machine)是每一个程序员都需要深入了解的关键组成部分。Monkey老师的JVM调优课程,无疑为我们提供了一个宝贵的平台,来深入探究JVM的工作原理...

    JVM调优总结 -Xms -Xmx -Xmn -Xss

    JVM调优总结 -Xms -Xmx -Xmn -Xss JVM 调优是 Java virtual machine 的性能优化,通过调整 JVM 的参数来提高 Java 应用程序的性能。其中,-Xms、-Xmx、-Xmn、-Xss 是四个重要的参数,分别控制 JVM 的初始堆大小、...

    jvm调优的实际应用

    《JVM调优实战解析》 在Java开发领域,JVM(Java Virtual Machine)是运行所有Java应用程序的基础,它的性能直接影响着程序的运行效率。因此,掌握JVM调优技术对于提升系统的稳定性和性能至关重要。本文将围绕"JVM...

    JVM调优总结PDF,带原理图

    ### JVM调优与垃圾回收机制详解 #### 一、引言 随着软件系统的复杂度不断提高,性能优化成为了软件开发中的一个重要环节。对于Java应用程序来说,Java虚拟机(JVM)的性能直接影响着应用的整体表现。垃圾回收(GC)...

    马老师jvm调优实战笔记

    马老师 JVM 调优实战笔记 JVM 调优是 Java 开发者们不可或缺的技能,它直接影响着 Java 应用程序的性能和稳定性。本笔记是马老师的 JVM 调优实战笔记,涵盖了 JVM 的概述、内存结构、堆内存、垃圾回收算法、JVM ...

    JVM调优总结.pdf

    JVM调优是一个复杂的过程,它涉及到对Java虚拟机内部工作原理的深刻理解。本文档总结了JVM调优的基础知识和一些核心概念,旨在帮助开发者更好地掌握Java程序的性能优化。 首先,文档提到了Java中的数据类型分为基本...

    JVM调优实战(转)

    JVM调优实战 本文档旨在介绍JVM调优实战的各个方面,包括JVM内存、垃圾回收、性能优化等。通过对JVM内存结构、垃圾回收机制和性能优化策略的详细讲解,帮助读者深入理解JVM的工作原理和优化方法。 1. JVM内存结构 ...

    JVM面试资料:JVM结构、JVM调优、四大垃圾回收算法、七大垃圾回收器

    JVM面试资料。 JVM结构:类加载器,执行引擎,本地方法接口,本地内存结构; 四大垃圾回收算法:复制算法、标记-清除算法、标记-整理算法、分代收集算法 ...JVM调优:命令行指令,设置堆内存大小的参数

    深入虚拟机---JVM调优总结(摘自网上网上大牛分享).pdf

    在深入讨论JVM(Java虚拟机)调优之前,我们有必要先了解一下虚拟机的基本概念和堆栈...通过上述的分析和总结,我们可以得出,JVM调优是一个涉及多方面知识的复杂过程,需要开发者具备扎实的理论基础和丰富的实践经验。

    jvm调优实战经验

    【JVM调优实战经验】 在Java开发中,JVM(Java Virtual Machine)的调优是提高应用程序性能的关键环节。JVM调优涉及到对内存管理、垃圾回收机制以及相关参数的调整,以优化应用程序的运行效率和稳定性。本文将深入...

    java高级篇:JVM调优.mp4

    分析常见的JVM调优技术及其相关条件,以及在实战中怎么使用到相关的技术进行调优,比较适合中高级开发进行学习,适合对JVM理解较深的开发学习

    JVM调优攻略.pdf

    ### JVM调优攻略 #### 一、概述 《JVM调优攻略》是一份详尽的文档,旨在帮助开发者理解并掌握Java虚拟机(JVM)的优化技巧。本指南不仅适用于初学者,对于有一定基础的开发人员来说也同样具有很高的参考价值。文档中...

    JVM调优实战.doc

    《JVM调优实战》是一份深入探讨Java虚拟机(JVM)性能优化的文档,主要分为理论篇和实战篇两大部分。本文将详细解析其中的关键知识点。 理论篇首先介绍了JVM内存模型,将其比喻为一个多功能的养鱼塘。在这个比喻中...

Global site tag (gtag.js) - Google Analytics