《一起探索JVM》系列
文章平均质量分 93
JVM一直是面试的常考点,但却是大部分程序员的弱项,希望通过这一系列的文章给大家一点思路
Java鱼仔
你会累是因为你在走上坡路
展开
-
从JVM角度思考--如何预估线上环境机器资源大小
(一)概述如何给JVM虚拟机巧妙地设计参数对大部分开发来说一直是个随缘的事情,可能是去网上拷贝一套参数,可能是沿用公司其他应用的参数。但是这个随缘的操作可能就会给未来留下隐患。给JVM分配的内存过大倒是没什么问题,无非浪费点资源,但是如果分配的内存过小,就有可能导致频繁的Full GC,给人一种系统一直很卡的感觉。这篇文章就通过一个实例分析一下如何结合场景设置JVM虚拟机参数。当然,本文更重要的是希望能通过预估参数的这个过程,让你更加了解虚拟机内部的一些东西,要想最准确的参数设置,用一些工具记录下JVM原创 2021-09-27 00:51:16 · 1087 阅读 · 0 评论 -
用几张图深度剖析Java运行时数据区
(一)基础概念介绍首先看一张图:下图是Java虚拟机运行时数据区,JVM的内存模型可以分为方法区、虚拟机栈、本地方法栈、堆和程序计数器。首先还是介绍一下基本概念程序计数器:程序计数器的作用可以看成是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变计数器的值来选择下一条需要执行的字节码的指令。java虚拟机的多线程是通过线程轮流切换来分配处理器执行时间的方式实现的,为了线程切换之后能恢复到正确的执行位置,每个线程就需要一个独立的程序计数器。java虚拟机栈:java虚拟机栈线程原创 2021-09-21 16:50:41 · 375 阅读 · 1 评论 -
两张图让你快速读懂JVM字节码指令
揭开指令码的神秘面纱原创 2021-09-14 23:22:22 · 312 阅读 · 0 评论 -
类加载的全过程,我给大家理一理
一个类从被加载到卸载出内存,一共包含下面七个阶段:加载、验证、准备、解析、初始化、使用、卸载原创 2020-11-24 22:33:57 · 213 阅读 · 0 评论 -
图解类加载器和双亲委派机制,一看就懂
虚拟机把Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成虚拟机可以直接使用的Java类型,这就是虚拟机的类加载机制。原创 2020-11-21 20:41:47 · 670 阅读 · 2 评论 -
关于垃圾收集器你了解多少?一文总结七大垃圾收集器
如果说垃圾收集算法是内存回收的理论,那么垃圾收集器就是内存回收的具体实现。原创 2020-11-17 20:23:59 · 854 阅读 · 0 评论 -
JVM垃圾回收机制是怎样的,何时触发YoungGC或FullGC操作,一文搞定
JVM垃圾回收机制是怎样的,何时触发YoungGC或FullGC操作原创 2020-11-15 23:04:14 · 5801 阅读 · 0 评论 -
JVM的内存分代,这篇文章帮你理一理
堆内存是JAVA虚拟机所管理的内存最大的一块,Java堆被所有线程共享,几乎所有的对象实例都是在堆中分配内存,因此Java的堆是垃圾回收的主要区域。原创 2020-11-12 20:14:51 · 606 阅读 · 2 评论 -
java虚拟机(三)java的垃圾回收机制详解
java中的垃圾回收算法是如何确认哪些对象是活的,哪些对象是死的?对于判断对象是活是死,有两种不同的算法可以运用:引用计数算法:给对象中添加一个引用计数器,如果有一个地方引用他,计数值就加一,当引用失效后,计数值就减一。每次进行垃圾回收时,将那些引用计数器值为0的对象回收,这就是引用计数算法。但是java语言并没有选择这种算法,原因是当两个对象相互引用时,引用计数器的值永远不会等于0,...原创 2019-11-09 22:28:38 · 697 阅读 · 0 评论 -
java虚拟机(二)java虚拟机的内存溢出异常
除了程序计数器,虚拟机中的其他几个运行时数据区都有发生内存溢出异常的可能。Java堆内存溢出:Java堆的作用是存储对象实例,因此也意味着只要不断的创建对象,并且避免被垃圾回收,就会出现Java堆溢出的异常。首先在idea中设置JVM参数,在VM options中设置参数,具体步骤按如下:以下为JVM中配置的参数信息,-verbose:gc 表示打开GC的跟踪日志;-X...原创 2019-09-25 20:25:46 · 426 阅读 · 0 评论 -
java虚拟机(一)java虚拟机的运行时内存划分及对象创建过程
Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,java虚拟机运行时数据区包括:方法区、虚拟机栈、本地方法区、堆、程序计数器,如下图所示:程序计数器:程序计数器的作用可以看成是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变计数器的值来选择下一条需要执行的字节码的指令。java虚拟机的多线程是通过线程轮流切换来分配处理器执行时间的...原创 2019-09-21 21:02:58 · 509 阅读 · 0 评论