![](https://img-blog.csdnimg.cn/e0e4508a3c8e4f4e9475d8bfded0466a.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
JVM
文章平均质量分 86
JVM基础、调优、面试题
shark-chili
这个作者很懒,什么都没留下…
展开
-
JVM进阶专栏汇总(周更)
这里面会有笔者精心挑选的并发、JVM、MySQL数据库专栏,也有笔者日常分享的硬核技术小文。,同时我的公众号也有我精心整理的。原创 2024-01-28 11:17:51 · 1012 阅读 · 0 评论 -
Arthas使用小结
可能由于日常开发的不注意,所以项目部署到生产环境时不时会出现一些奇奇怪怪的问题,这时候我们就需要一款便捷且轻量的工具监控并排查问题。这时候我们就不得不提一下Arthas,Arthas是一款强大的开源Java诊断程序,它可以非常方便的启动并以界面式的方式和Java程序进行交互,支持监控程序的内存使用情况、线程信息、gc情况、甚至可以反编译并修改现上代码等。启动arthas选择目标Java程序后,artahs会向目标程序注入一个代理。代理会创建一个集HTTP和Telnet的服务器与客户端建立连接。原创 2021-12-05 15:19:06 · 606 阅读 · 0 评论 -
Java内存模型JMM详解
代码在执行过程从,为提高最终指令执行效率,会对执行动作进行重排序的过程。Java代码从编译到执行会经历 编译器重排序->指令重排序->内存重排序这三个过程。为了屏蔽不同操作系统之间操作系统内存模型的差异,Java定义了属于自己的内存模型解决这个问题。JMM也可以理解为并发编程的一组规范,抽象了线程和主内存之间的关系,以类似于volatile、synchronized等关键字简化用户开发实现并发编程以解决CPU多级缓存以及指令重排序带来的问题。原创 2020-10-18 21:15:16 · 268 阅读 · 1 评论 -
JVM常见面试题
方法区主要是用于存储类信息、静态变量以及常量信息的。是各个线程共享的一个区域。我们都知道JVM中有个区域叫堆区,所以有时候人们也会称方法区为Non-Heap(非堆)。在JDK8之前方法区存放在一个叫永久代的空间里。在JDK8之后由于HotSpot和JRockit的合并,所以方法区就被作为元数据区了。首先我们需要了解一下类常量池类常量池:主要用于存放两大类常量:字面量(Literal)和符号引用量(Symbolic References)。我们都知道Class文件包含字段描述符方法描述符接口。原创 2023-12-20 08:40:16 · 398 阅读 · 1 评论 -
JVM调优小结
查看Java应用程序配置参数或者JVM系统属性,相关命令详情我们可以使用-help或者manUsage:为了演示,笔者在服务器上开启了一个Java应用,我们可以使用jps命令查看其进程id,可以看到笔者服务器中有一个pid为19946的Java进程。20104 Jps19946 jar查看当前应用所有的配置参数以及系统配置属性命令为jinfo pid......如果我们希望查看当前Java应用是否有配置某些信息,可以使用命令jinfo -flag 配置选项 pid,例如我们想查看当前应用是否有开启。原创 2023-12-21 14:04:29 · 1641 阅读 · 1 评论 -
即时编译器JIT
由于上述代码仅仅是创建一个对象后操作对象的变量,实际上这个工作似乎和对象没有任何关联,编译器识别到这点之后就不去创建没必要的对象,进而使用标量替换的方式将对象的成员变量放到栈上,避免没必要的对象创建和销毁。我们都知道创建一个对象,都是在堆上分配的,假如这个对象使用封闭,GC就会将其回收,而创建和回收这一来一回的操作也是有一定开销的。因此方法调用期间是有一定的时间和空间的开销的。就会进行一种栈上编译的优化操作,它会将这段代码编译为最优逻辑保存到本地内存,在执行循环体的期间,直接使用缓存中的机器码。原创 2023-12-14 08:57:55 · 1284 阅读 · 1 评论