
《深入理解Java虚拟机》
文章平均质量分 82
bokerr
临渊羡鱼,不如退而结网。
展开
-
流言粉碎机:JAVA使用 try catch会影响性能
流言粉碎机:JAVA使用 try catch会影响性能一、JVM 异常处理逻辑二、关于JVM的编译优化1. 分层编译2. 即时编译器1. 解释模式2. 编译模式3. 提前编译器:jaotc三、关于测试的约束执行用时统计编译器优化的因素关于指令重排序四、测试代码五、解释模式下执行测试六、编译模式测试七、结论前言:不知道从何时起,传出了这么一句话:Java中使用try catch 会严重影响性能。然而,事实真的如此么?我们对try catch 应该畏之如猛虎么?一、JVM 异常处理逻辑Java原创 2022-01-23 19:37:30 · 4725 阅读 · 5 评论 -
Jvm之直接内存与非直接内存
直接内存直接内存:概指系统内存,而非堆内存,不指定大小时它的大小默认与堆的最大值-Xmx参数值一致。非直接内存: 也可以称之为堆内存,运行JVM都会预先分配一定内存,我们把JVM管理的这些内存称为堆内存(非操作系统直接内存),JVM会对这些内存空间的分配和回收进行管理。所谓 直接的关系指的是与底层操作系统的关系。直接 非直接内存的概念与NIO有非常大的关联;在NIO之前,java.io 的方式是: 磁盘IO --> 直接内存[系统内核态] --> 非直接(堆)内原创 2021-12-17 00:17:34 · 1243 阅读 · 0 评论 -
《深入理解Java虚拟机》(八) 记录一次OOM问题分析实战
记录一次JVM调优实战一、主要问题概述以及分析(一).相关操作(二).现象(三).分析二、相关工具介绍三、实际问题快照分析(一).通过Memory查看老年代内存占用情况(二).选择Live Memory 视图,(三).生成堆快照,分析对象信息四、代码逻辑问题五、性能问题(一).现象(二).处理一、主要问题概述以及分析上班高峰期间,系统使用一段时间后崩溃,报错内存溢出;(一).相关操作打印系统运行GC日志,初步分析堆内存分代情况;jvisualvm实时观察系统运行过程中堆内存占用、活动线程数量曲线。原创 2021-03-13 16:25:06 · 234 阅读 · 0 评论 -
JProfile分析JVM内存溢出、线程阻塞
原文章地址:https://www.cnblogs.com/jpfss/p/8488111.htmlPS* JProfile是付费软件。对JVM有一定理解食用更佳一.JProfiler是什么JProfiler是由ej-technologies GmbH公司开发的一款性能瓶颈分析工具(该公司还开发部署工具)。其特点:使用方便界面操作友好对被分析的应用影响小CPU,Thread,Memory分析功能尤其强大支持对jdbc,noSql, jsp, servlet, socket等进行分析支转载 2021-03-06 17:08:09 · 1810 阅读 · 0 评论 -
《深入理解Java虚拟机》(七) volatile 变量
@[TOC](《深入理解Java虚拟机》(七) volatile 变量)学习JVM有一段时间了,现在开始进入并发阶段的学习;之前集中写博客是内存自动管理阶段,这部分有一个相当重要的问题JVM调优,这不仅增长见闻,与工作也有很大关系。之后的部分:虚拟机执行子系统、程序编译与代码调优就只是默默学习了一下概念。现在到了并发了,我知道是时候写博客记录下我的“李姐”了。没写博客的部分不是不重要,而是我还没实际触碰到,必然有一天那些忽视的东西还会重新捡起来。概述今天的主角是volatile变量,在讲它之前我会稍微原创 2020-10-29 22:18:14 · 260 阅读 · 0 评论 -
《深入理解Java虚拟机》(四) 调优工具、指令
调优工具、指令原创 2020-10-10 10:49:41 · 237 阅读 · 0 评论 -
《深入理解Java虚拟机》(六) 调优策略 -- 笔记
回收策略原创 2020-10-07 21:21:24 · 127 阅读 · 0 评论 -
《深入理解Java虚拟机》(五) JVM调优案例
JVM调优案例问题问题我们公司的程序是的B/S架构,工作中碰到客户提出一个问题,他们的系统最近突然会用着用着就卡死掉–浏览器访问服务器一开始会卡顿,直至最终会完全卡死没有响应。并且客户反馈的是最近才变卡的,之前一直没有问题,现在一旦系统卡住就需要重启,对正常使用造成了严重影响。客户的服务器配置如下(应用程序服务器以及数据库服务器都是如下配置)内存:32G磁盘:机械 2 TCPT: 两颗4核 CPU由于我司产品是客户内部部门间使用,所以并发量并不大,上述配置已经完全足够开销。排查问题经过原创 2020-09-13 23:59:00 · 333 阅读 · 1 评论 -
《深入理解Java虚拟机》(三)类加载机制
《深入理解Java虚拟机》之--类加载机制1、什么是类的加载Java虚拟机把描述类的二进制流冲.Class文件中读到内存中,并在这个过程对加载的数据进行校验、转换解析、初始化,最终形成可以被Java虚拟机直接使用的java类型,这个过程叫做虚拟机的类加载机制。类的加载会把类的数据结构信息存放于方法区,并在堆区创建一个java.lang.Class对象,用来封装该类在方法区的数据结构,该类对应的java.lang.Class对象就是类加载的最终产品;Java程序员可以通过该类对应的java.lang.Cl原创 2020-09-13 19:25:02 · 1136 阅读 · 0 评论 -
《深入理解JAVA虚拟机》(一) JVM 结构 + 栈帧 详解
1、程序计数器: 线程独有,每个线程都有自己的计数器;由于CPU的任意时刻只能执行所有线程中的一条,所以需要使用程序计数器来支持JVM的并发;另外字节码解释器读取下一行指令、分支、循环、跳转、异常处理等等逻辑都依赖于程序计数器。程序计数器是JVM唯一不存在OutOfMemoryError的区域;2、Java虚拟机栈: 线程独有,用于保存线程相关的栈帧(@注1);生命周期与线程相同,线程中,方法执行的过程等同该方法对应栈帧从入栈到出栈的过程,如果方法执行过程中调用了其它...原创 2020-08-19 23:10:39 · 614 阅读 · 0 评论 -
《深入理解Java虚拟机》(二) GC 垃圾回收机制
JVM之GC--垃圾回收机制一、概述二、判断对象是否需要被回收方式1、引用计数法:2、可达性分析法:一、概述JVM的结构中包含:线程独有的程序计数器、JVM栈、本地方法栈,他们的生命周期与线程一致,实现了内存自动清理,不需要GC进行内存管理;线程共享的方法区和堆区,其中方法区内存回收的条件非常苛刻,所以GC内存回收主要发生在堆上,程序运行期间这部分共享区域的内存分配和使用都是动态的;二、判断对象是否需要被回收方式1、引用计数法:每个对象使用一个引用计数属性,每当对象被引用/释放 自动改变引用计数,原创 2020-09-05 18:06:05 · 319 阅读 · 1 评论