
JVM的内存分代,这篇文章帮你理一理
[#](#一-jvm分代) (一)JVM分代 {#一-jvm分代} --------------------------------- 堆内存是JAVA虚拟机所管理的内存最大的一块,Java堆被所有线程共享,几乎所有的对象实例都是在堆中分配内存,因此Java的堆是垃圾回收的主要区域。 JVM的内存分代讲的就是堆内存的分代,为了更加高效的回收垃圾,将内存划分为了多个gener...
[#](#一-jvm分代) (一)JVM分代 {#一-jvm分代} --------------------------------- 堆内存是JAVA虚拟机所管理的内存最大的一块,Java堆被所有线程共享,几乎所有的对象实例都是在堆中分配内存,因此Java的堆是垃圾回收的主要区域。 JVM的内存分代讲的就是堆内存的分代,为了更加高效的回收垃圾,将内存划分为了多个gener...
<h2><a href="#一-关于垃圾回收">#</a> (一)关于垃圾回收 {#一-关于垃圾回收}</h2> <p>JAVA的垃圾回收需要完成三件事情:</p> <p>1、哪些内存需要回收</p> <p>2、什么时候回收</p> <...
[#](#一-基础概念介绍) (一)基础概念介绍 {#一-基础概念介绍} ------------------------------------ 首先看一张图:下图是Java虚拟机运行时数据区,JVM的内存模型可以分为方法区、虚拟机栈、本地方法栈、堆和程序计数器。 概述 {#一-概述}</h2> <p>如果说垃圾收集算法是内存回收的理论,那么垃圾收集器就是内存回收的具体实现。</p> <p>垃圾收集器目前存在的有很多,但是依旧没有哪个收集器是万能的存在,我们只能选择一个最适合应用...
<h2><a href="#一-概述">#</a> (一)概述 {#一-概述}</h2> <p>我们都知道Java代码会被编译成class文件,在class文件中描述了该类的各种信息,class类最终需要被加载到虚拟机中才能运行和使用。</p> <p>虚拟机把Class文件加...
<h2><a href="#一-cms垃圾收集器">#</a> (一)CMS垃圾收集器 {#一-cms垃圾收集器}</h2> <p>CMS(Concurrent Mark Sweep)收集器是一种以获取<strong>最短回收停顿时间</strong>为目标的老年代收集器。C...
<h2><a href="#前言">#</a> 前言 {#前言}</h2> <p>JVM调优是争取高薪必须要掌握的一项技能,但是许多程序员在工作中很少遇到去JVM调优的情况,在这篇文章中,我整理了一些调优工具以及调优的思路,希望对大家有所帮助。</p> <h2><a h...
[#](#一-概述) (一)概述 {#一-概述} ------------------------ 很多人可能会觉得JVM字节码很神秘,我们写的一行行代码放到底层竟然可以用一串16进制的数字保存。再到计算机底层竟然可以用0和1执行如何复杂的代码。JVM的设计确实十分巧妙,但对我们几乎所有开发者来说,这些底层的内容我们已经不需要再去掌握了,因此今天我们不去讲JVM字节码究竟是怎...
<h2><a href="#一-概述">#</a> (一)概述 {#一-概述}</h2> <p>如何给JVM虚拟机巧妙地设计参数对大部分开发来说一直是个随缘的事情,可能是去网上拷贝一套参数,可能是沿用公司其他应用的参数。但是这个随缘的操作可能就会给未来留下隐患。给JVM分配的内存过大倒是没什么问题,...
<p>每次写线程池的文章时,总会想起自己大三第一次面试就是挂在这上面,当时年少轻狂,连SpringBoot是什么都不知道就敢面阿里,真是初生牛犊不怕虎。</p> <h2><a href="#一-什么是线程池">#</a> (一)什么是线程池 {#一-什么是线程池}</h2> <p&...