首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
jvm
秃了也弱了
创建于2023-11-02
订阅专栏
jvm
等 4 人订阅
共39篇文章
创建于2023-11-02
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
JIT即时编译器深度解析——Java性能提升利器
@[TOC] 一、JIT概述 1、为什么要用JIT即时编译器 Java程序在运行的时候,主要就是执行字节码指令,一般这些指令会按照顺序解释执行,这种就是解释执行。 但是那些被频繁调用的代码,比如调用次
新一代垃圾收集器:ZGC深度剖析,到底什么时候用?
@[TOC] 一、了解ZGC 1、ZGC出现背景 对于Java的项目来说,JVM进行垃圾回收会有一个很大的问题,就是STW(StopTheWorld)。 在很多业务场景中,STW时间太长是非常致命的,
【精选】java方法区超详细汇总,方法区到底是干什么用的?不懂方法区不能说了解jvm!
《Java虚拟机规范》中明确说明:“尽管所有的方法区在逻辑上是属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩。”但对于HotSpotJVM而言,方法区还有一个别名叫做Non-Heap(非堆),目的就是要和堆分开。 所以,方法区看做是一块独立于...
Quartz使用文档,使用Quartz实现动态任务,Spring集成Quartz,Quartz集群部署,Quartz源码分析
官网:http://www.quartz-scheduler.org/ 源码地址:https://github.Quartz 的意思是石英,像石英表一样精确。Quartz is a richly featured, open source job scheduling libra...
Quartz实战:基于Quartz实现定时任务的动态调度,实现定时任务的增删改查
-- 注意第三条,是一个发送邮件的任务,需要改成你自己的QQ和授权码。不知道什么是授权码的自己百度。INSERT INTO `sys_job` (`id`, `job_name`, `job_group`, `job_cron`, `job_class_path`, `job_d...
【精选】什么是java本地方法?什么,还没听说过java的native关键字?真的该学学了!-CSDN博客
简单地讲,一个Native Method就是一个Java调用非Java代码的接口。一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如C。这个特征并非Java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以extern...
java代码编译之后是如何运行的?不知道这些,面试官问你jvm问题,你只能懵圈
计算机系统体系对我们来说越来越远,在不了解底层实现方式的前提下,通过高级语言很容易编写程序代码。但事实上计算机并不认识高级语言。java就属于高级语言。java代码会进行两次编译,第一次生成class字节码文件,第二次使用JIT编译器将热点代码编译出来,进行缓存起来,增加程序性能...
JMM内存模型深入详解,探索volatile、synchronized与VarHandle深层次的奥秘-CSDN博客
A memory model describes, given a program and an execution trace of that program, whether the execution trace is a legal execution of the pr...
【精选】jvm运行时数据区是干啥的?CPU切换线程会不会突然忘记程序执行到哪一步了
内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。不同的JVM对于内存的划分方式和管理机制存在着部分差异。结合JVM虚拟机规范,来探...
【精选】依据CPU的三级缓存来解释可见性、有序性——真正的底层
我们都知道,volatile解决了变量的可见性,保证了有序性,禁止了指令重排序。 一个java进程执行的过程:打开进程(java程序) -> 将进程需要执行的main程序加载到内存中 -> 将指令加载到PC寄存器,将数据加载到Registers,ALU计算组做计算 ->计算完毕将...
【精选】java-内存溢出与内存泄漏
1.内存溢出相对于内存泄漏来说,尽管更容易被理解,但是同样的,内存溢出也是引发程序崩溃的罪魁祸首之一。2.由于GC一直在发展,所有一般情况下,除非应用程序占用的内存增长速度非常快,造成垃圾回收已经跟不上内存消耗的速度,否则不太容易出现OOM的情况。3.大多数情况下,GC会进行各种...
【精选】史上最全java堆,将知识点掰碎了给你嚼,还不信学不会。
1.2.1.栈上分配。2.同步省略。3.分离对象或标量替换。一、Java\jdk1.8.0_131\bin\jvisualvm. 今天我们只说java的堆。java虚拟机其实由很多部分组成,而堆只是其中一部分,但是也是很重要的一部分。 1.一个JVM实例只存在...
java对象创建的流程到底是什么样子的?new一个对象是真的直接放在堆里吗?其实大有学问!-CSDN博客
1.编译器通过逃逸分析,确定对象是在栈上分配还是在堆上分配。如果是在堆上分配,则进入选项2. 2.如果tlab_top + size <= tlab_end,则在在TLAB上直接分配对象并增加tlab_top 的值,如果现有的TLAB不足以存放当前对象则3. ...
jvm-垃圾回收随时都可以STW吗?带你认识安全点和安全区域
1.程序执行时并非在所有地方都能停顿下来开始GC,只有在特定的位置才能停顿下来开始GC,这些位置称为“安全点(Safepoint)”。2.Safe Point的选择很重要,如果太少可能导致GC等待的时间太长,如果太频繁可能导致运行时的性能问题。大部分指令的执行时间都非常短暂,通常...
只知道java有反射可以说是动态语言,动态链接,早期晚期绑定、虚方法这些概念你知道吗
每一个栈帧内部都包含一个指向运行时常量池中该栈帧所属方法的引用。包含这个引用的目的就是为了支持当前的方法的代码能够实现动态链接(Dynamic Linking)。比如:invokedynamic指令。 在Java源文件被编译到字节码文件中时,所有的变量和方法引用都作...
【精选】happens-before规则——理解happens-before规则
happens-before 是 JMM 最核心的概念。对应 Java 程序员来说,理解 happens-before是理解 JMM 的关键。从 JDK 5 开始,Java 使用新的 JSR-133 内存模型(除非特别说明,本文针对的都是JSR-133 内存模型)。JSR-133...
深入理解JDK动态代理原理,使用javassist动手写一个动态代理框架
Java操纵字节码,最底层一般是使用ASM进行操作的,但是ASM上手难度很大,我们可以使用javassist对字节码进行操作,相对来说简单一些。import javassist.import javassist.import javassist.import javassist....
java使用jstat分析内存
1.2.
认识java-STW:Stop the World
1.Stop-the-World,简称STW,指的是GC事件发生过程中,会产生应用程序的停顿。停顿产生时整个应用程序线程都会被暂停,没有任何响应。有点像卡死的感觉,这个停顿成为STW。 可达性分析算法中枚举根节点(GC Roots)会导致所有Java执行线程停顿。 (...
让你了解什么是内存屏障-CSDN博客
编译器和处理器必须同时遵守重排规则。多核处理器需使用内存屏障指令来确保一致性。即使编译器优化掉了一个字段访问(因为一个读入的值未被使用),需要产生内存屏障,就像这个访问仍然需要保护。(可参考下面的优化掉内存屏障的章节)。内存屏障指令仅直接控制CPU与其缓存之间,与垃圾回收机制中“...
下一页