
Jvm
文章平均质量分 94
jvm
Leo Han
Leo Han
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java中指令重排、内存可见性
由于现在多核计算机的发展,以及硬件性能的快速发展,CPU的运行速度也越来越快,而内存的速度与CPU的速度差了几个量级,基于成本和性能的考虑,现代计算机在CPU和内存之间都会增加一个缓存层,一般分为L1,L2,L3 cache。因此cpu在计算的时候首先会将数据从内存加载到缓存,然后通过读取缓存中的数据进行计算,当计算完之后,在一定时机写回到内存中去(并不是立马写回)。这样就会导致一个问题,在多线程环境下,多个线程都读取了一个数据,然后修改,这时候就发生了数据不一致问题。另外,在我们编写的代码编译完之后,原创 2022-02-17 17:18:55 · 995 阅读 · 0 评论 -
Linux下常用java问题排查命令、工具
java常用性能诊断工具、命令原创 2022-02-21 11:30:03 · 7250 阅读 · 0 评论 -
java中类加载器ClassLoader,双亲加载机制,启动类加载器,应用类加载器,线程上下文类加载器
spring cloud中当配置中心刷新时,可以不停止应用而原创 2021-07-28 22:17:47 · 939 阅读 · 0 评论 -
JVM中TLAB栈上分配和逃逸分析
我们知道在java中对象在堆上分配,但是堆是线程共享区域,如果在对上进行对象分配,则需要对堆进行锁处理,会影响效率,为此JVM提供了TLAB的策略(Thread Local Allocation)进行分配,如果实例化类之前已经完成了装载,JVM会优先在TLAB中为对象实例分配内存空间,TLAB是一块很小的空间,每个线程专属,可以理解成java线程栈的一部分,在这个上面分配对象不会存在线程安全问题,如果TLAB分配失败,JVM则会通过加锁的操作在Eden区域分配对象。开启TLAB:-XX:UseTLAB设原创 2020-05-08 22:31:38 · 237 阅读 · 0 评论 -
JVM垃圾收集器,GC,垃圾收集器种类,串行并行并发回收,STW,G1收集器,GC组合配置,GC内存选项配置,,GC辅助选项配置
传统C/C++程序内存需要开发者手动来进行分配和回收,常见的比如malloc、free来进行内存分配和回收,这样做虽然能够很大的自由度来对内存进行操作,但是也对程序的设计和开发者本身大代码水平有很高的要求,因为一不小心,分配的内存在没有作用后没有及时回收,随着系统运行的时间越来越长,系统耗费的内存会越来越多,最终会达到硬件资源的内存最大限制水平,从而会导致整个程序最终崩溃。Java中内存的管理是...原创 2020-05-06 23:04:51 · 983 阅读 · 0 评论 -
JVM运行时内存布局
JVM运行时数据区大致情况如下:程序计数器:或者说PC计数器 Program counter register.记录的是当前线程执行的字节码的位置。需要明确的是,JVM是基于栈的架构(还有事基于寄存器架构),所以任何操作都需要通过入栈和出栈来完成。Java中虚拟机的多线程是通过线程轮流切换的方式来执行,因此当发生线程切换后需要记住当前线程执行到了哪一步,这样以便线程再次切换回来继续执行之前的操...原创 2020-04-22 22:02:26 · 236 阅读 · 1 评论 -
Java中类在Jvm中的表示
一般学习java都了解,java是一门高级语言,是一门面向对象的语言。而jvm(java virtual machine,java虚拟机)是java程序运行的基础。一般可以将jvm理解为通过C、C++实现相关底层系统调用。需要明确,无论哪种语言,最终执行都是调用底层系统命令来执行相关的程序。那么,java类在jvm虚拟机中是如何表示的呢?了解C++的同学应该知道,C++中也是类似和Java中类的...原创 2020-04-21 22:28:26 · 366 阅读 · 0 评论