hao同学的技术博客

  • 首页
  • Java
    • Java
    • JVM教程
    • Java面试
    • Java并发入门
    • Java并发进阶
  • 项目
    • 从零打造项目
  • Python
    • Python
    • Python爬虫
    • 算法
  • Java框架
    • Spring
    • SpringBoot
  • 前端
    • Angular
  • 其他
    • Linux
    • SQL
  • 随笔
JVM教程
带你深入学习JVM
JVM教程

你知道Java有多少种内存溢出吗

Java内存区域 关于这部分内容大多来源于《深入理解Java虚拟机》一书。 Java 运行时数据区域(JDK8)如下图所示: 关于上述提到的线程共享和线程隔离区域,下图做详细讲解: 程序计数器 程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等功能都需要依赖这个计数器来完。 另外,在多线程的情况下,为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各线…

2022年5月10日 0条评论 366点热度 0人点赞 hresh 阅读全文
JVM教程

日志分析工具:GCViewer、VisualVM、GCeasy

GCViewer GCViewer 是一个可以将 JVM 中的 gc log 可视化的工具,使用该工具可以帮助你充分的发现 JVM 垃圾回收中的潜在问题,让你可以更加准确的做出关于 JVM GC 优化的决策。 安装并启动 git clone https://github.com/chewiebug/GCViewer.git //或者用 IDEA打开项目后,用 maven进行打包 mvn clean pacakge //得到一个 jar包 cd target java -jar gcviewer-1.36.jar 导…

2022年5月9日 0条评论 207点热度 0人点赞 hresh 阅读全文
JVM教程

MAT工具使用详解

Eclipse Memory Analyzer (MAT)是一个快速且功能丰富的Java堆分析器,可帮助您发现内存泄漏并减少内存消耗。 安装并启动 直接参考 Mac下MAT的安装 需要注意的是注意 JDK 版本和 MAT 版本的映射,最新的 MAT 版本为 1.12.0,需要在 JDK11 以上运行。 如果 JDK 版本为 11,且 MAT 版本是最新的,还需要修改 /Applications/mat.app/Contents/Eclipse/MemoryAnalyzer.ini,在文件中指定 JDK 版本,增加配…

2022年5月9日 0条评论 381点热度 0人点赞 hresh 阅读全文
JVM教程

GC调优基础以及初识jstat命令

影响垃圾收集性能有三个主要的属性,垃圾收集调优又有三个基本原则,以及垃圾收集调优时需要采集的信息。如果想要对垃圾收集进行调优,则需要根据实际场景对不同属性做出取舍,理解调优的原则以及收集什么信息。 性能属性 吞吐量 吞吐量是评价垃圾收集器能力的重要指标之一,指不考虑垃圾收集引起的停顿时间或内存消耗,每单位时间可以执行的工作量的指标。通常,吞吐量的增加是以延迟增加和/或内存占用增加为代价的。 一般吞吐量需求(Generic requirements for throughput) 类似这样: 每天必须处理 100万个…

2022年5月9日 0条评论 419点热度 0人点赞 hresh 阅读全文
JVM教程

你知道Jhsdb整合的故障处理工具吗

Jhsdb 是 JDK9 引入的新的命令行工具,它有 clhsdb、debugd、hsdb、jstack、jmap、jinfo、jsnap 这些 mode 可以使用,其中有几个在名称和功能上与以前的 JDK 发行版中可用的各个命令行工具相对应。看得出来,官方想要 jhsdb 工具整合多个其他工具的功能,甚至还做了一些功能拓展。所以本文将带大家认识一下 jhsdb 下的这些 mode。 在使用 jhsdb 工具之前,必须先获取 PID,所以我们先来认识一下 jps 命令。 jps jps(JVM Process St…

2022年5月9日 0条评论 213点热度 0人点赞 hresh 阅读全文
JVM教程

关于即时编译器的其他一些优化手段

在前面两篇文章讲述了即时编译器的两种特殊优化技术:方法内联和逃逸分析,其中基于逃逸分析结果又有三种优化方式:同步消除、栈上分配以及标量替换。 除此之外,即时编译器还有很多优化手段,其中有不少经典编译器的优化手段,也有许多针对 Java 语言,或者说针对运行在 Java 虚拟机上的所有语言进行的优化。相较于方法内联,其他优化手段理解起来并不困难。一开始没打算整理这块内容,但是看了一下,觉得和之前的《如何提升代码质量》一文息息相关,除了要熟悉重构的手段,了解更深层次的原理非常有意义。即时编译器可以帮助我们优化代码,这是…

2022年5月9日 0条评论 202点热度 0人点赞 hresh 阅读全文
JVM教程

关于逃逸分析的学习

上文讲解完方法内联后,JIT 即时编译还有一个最前沿的优化技术:**逃逸分析(Escape Analysis) **。废话少说,我们直接步入正题吧。 逃逸分析 首先我们需要知道,逃逸分析并不是直接的优化手段,而是通过动态分析对象的作用域,为其它优化手段提供依据的分析技术。具体而言就是: 逃逸分析是“一种确定指针动态范围的静态分析,它可以分析在程序的哪些地方可以访问到指针”。Java虚拟机的即时编译器会对新建的对象进行逃逸分析,判断对象是否逃逸出线程或者方法。即时编译器判断对象是否逃逸的依据有两种: 对象是否被存入堆…

2022年5月8日 0条评论 243点热度 0人点赞 hresh 阅读全文
JVM教程

深入学习方法内联

在前面多篇文章中多次提到方法内联,作为编译器最重要的优化技术,该技术不仅可以消除调用本身带来的性能开销,还能够触发更多的优化。本文将带领大家对该技术一探究竟。 方法内联 方法内联指的是:在编译过程中遇到方法调用时,将目标方法的方法体纳入编译范围之中,并取代原方法调用的优化手段。 以 getter/setter 为例,如果没有方法内联,在调用 getter/setter 时,程序需要保存当前方法的执行位置,创建并压入用于 getter/setter 的栈帧、访问字段、弹出栈帧,最后再恢复当前方法的执行。而当内联了对 …

2022年5月8日 0条评论 169点热度 0人点赞 hresh 阅读全文
JVM教程

关于即时编译器的优化措施

我们来继续讲解 Java 虚拟机中的即时编译。 Profiling 上篇文章中介绍了关于分层编译的交互关系图,这里再贴一遍。 对于图片中描述的四种编译途径做过详细介绍,这里就不重复介绍了,其中提到了如下内容:分层编译中的 0 层、2 层和 3 层都会进行 profiling,收集能够反映程序执行状态的数据。其中,最为基础的便是 2层进行的 profiling,它只需要统计方法的调用次数以及循环回边的执行次数,当统计之和超过阈值就会触发即时编译。 0 层和 3 层相较于 2层复杂一些,需要收集用于 4 层 C2 编译…

2022年5月8日 0条评论 174点热度 0人点赞 hresh 阅读全文
JVM教程

关于即时编译器的那些事

我们在前文学习 Java 是如何执行的这篇文章中有提及即时编译器,这是一项用来提升应用程序运行效率的技术。通常而言,代码会先被 Java 虚拟机解释执行,之后反复执行的热点代码则会被即时编译成为机器码,直接运行在底层硬件之上。 那么问题来了,既然在 HotSpot 中即时编译可以提升程序运行效率,为什么还需要解释器呢? 解释器与编译器 首先需要了解的是,并不是所有的 Java 虚拟机都采用解释器与编译器并存的运行架构, 但是主流的 Java 虚拟机,比如说 HotSpot 内部就同时包含解释器和编译器。注意此处的编…

2022年5月8日 0条评论 155点热度 0人点赞 hresh 阅读全文
123

hresh

这是一个专注于IT技术学习交流的个人技术博客网站,包括Java学习、Python爬虫、Web开发实践等领域,深耕Java领域,内容涵盖Java基础、Java并发编程、Java虚拟机、Java面试等核心知识点。

最新 热点 随机
最新 热点 随机
后端必知:遵循Google Java规范并引入checkstyle检查 Spring Security结合Redis实现缓存功能 Spring Security结合JWT实现认证与授权 Spring Security自定义认证逻辑实现图片验证码登录 Spring Security进阶学习 Spring Security入门学习
Python对 BFS(广度优先算法)讲解 Spring IoC资源管理之ResourceLoader Spring IoC之存储对象BeanDefinition Angular之Rxjs学习 Spring Security结合Redis实现缓存功能 动态规划学习(Python)
分类
  • Angular / 11篇
  • Java / 6篇
  • Java并发入门 / 7篇
  • Java并发进阶 / 7篇
  • Java面试 / 24篇
  • JVM教程 / 25篇
  • Linux / 3篇
  • Python / 13篇
  • Python爬虫 / 17篇
  • Spring / 27篇
  • SpringBoot / 8篇
  • SQL / 6篇
  • 从零打造项目 / 19篇
  • 算法 / 18篇
  • 随笔 / 16篇
最近评论
1 发布于 4 个月前(09月29日) :lol: :twisted: 发发
roydon 发布于 4 个月前(09月27日) 加个友链吗大佬。 我的site:https://roydon.xyz
Javmag 发布于 4 个月前(09月21日) :rolleyes: Theme Kratos Made By Seaton Jiang.
小wu 发布于 5 个月前(09月06日) 宝藏up关注了 :arrow:
罗简单 发布于 7 个月前(07月17日) 您好,我们有一个网站需要爬取数据,参数也加密了,需要您的帮助,付费,请问如何联系到您? 我的vx是...
友链
  • roydon roydon
  • 雨临Lewis的博客 雨临Lewis的博客

COPYRIGHT © 2022 hao同学的技术博客. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

鄂ICP备2022007381号

鄂公网安备 42010302002449号