JVM
文章平均质量分 88
枫林メ
仗剑天涯,四海为家
展开
-
4、内存模型以及如何判定对象已死问题
弱引用(Weak Reference)对象与软引用对象的最大不同就在于:GC在进行回收时,需要通过算法检查是否回收软引用对象,而对于Weak引用对象, GC总是进行回收。不可见阶段的对象在虚拟机的对象根引用集合中再也找不到直接或者间接的强引用,最常见的就是线程或者函数中的临时变量。程序不在持有对象的强引用。(2)所有对该对象的引用全部是强引用(除非我们显式地使用了:软引用(Soft Reference)、弱引用(Weak Reference)或虚引用(Phantom Reference))原创 2022-09-08 06:23:42 · 114 阅读 · 1 评论 -
3、Java对象内存模型
数据 内存 -- CPU 寄存器 -127 补码 10000001 - 11111111 32位的处理器一次能够去处理32个二进制位 4字节的数据 64位操作系统 8字节 2的64次方的寻址空间指针压缩技术 JDK1.6出现的 开启了指针压缩 什么时候指针压缩会无效??超过32G指针压缩无效:便于数据之间的类型转换,例如:long类型转换为int类型时,高地址部分的数据可以直接截掉。:便于数据类型的符号判断,因为最低地址位数据即为符号位,可以直接判断数据的正负号。原创 2022-09-06 20:20:56 · 296 阅读 · 0 评论 -
2、深入运行时数据区
首先“aaaa”会被认为字面量,先在字符串常量池中查找(.equals()),如果没有找到,在堆中创建“aaaa”字符串对象,并且将“aaaa”的引用维护到字符串常量池中(实际是一个hashTable结构,存放key-value结构数据),再返回该引用;String中的intern方法是一个 native 的方法,当调用 intern方法时,如果常量池已经包含一个等于此String对象的字符串(用equals(object)方法确定),则返回池中的字符串。:类,接口,方法,字段等相关的描述信息。原创 2022-09-02 17:52:34 · 177 阅读 · 1 评论 -
1、JVM之走进类加载
TIOBE语言热度排行榜:https://www.tiobe.com/tiobe-index/世界上没有最好的编程语言,如果有,我相信一定是JAVA。负责读取 Java 字节代码,并转换成 java.lang.Class 类的一个实例的代码模块。类加载器除了用于加载类外,还可用于确定类在Java虚拟机中的唯一性。一个类在同一个类加载器中具有唯一性(Uniqueness),而不同类加载器中是允许同名类存在的,这里的同名是指全限定名相同。......原创 2022-09-01 16:49:09 · 341 阅读 · 0 评论 -
JVM监控命令和可视化监控工具
1 JVM监控命令 jps、jstack、jmap、jinfo、jstat 1.1 jps jps主要用来输出JVM中运行的进程状态信息,包括进程ID、进程启动的路径等。 Ps -ef | grep java 1.2 jstack 如果想要查看Java进程中线程堆栈的信息,可以选择jstack。 用于生成当前JVM的所有线程快照,线程快照是虚拟机每一条线程正在执行的方法,目的是 定位线程长时间停顿的原因,比如线程间死锁、死循环、请求外部资源导致的长时间等待。 -F:当正常输出的请求不被响..原创 2021-11-23 10:21:53 · 1558 阅读 · 0 评论 -
JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
现实企业级Java开发中,有时候我们会碰到下面这些问题: OutOfMemoryError,内存不足 内存泄露 线程死锁 锁争用(Lock Contention) Java进程消耗CPU过高 ...... 这些问题在日常开发中可能被很多人忽视(比如有的人遇到上面的问题只是重启服务器或者调大内存,而不会深究问题根源),但能够理解并解决这些问题是Java程序员进阶的必备要求。本文将对一些常用的JVM性能调优监控工具进行介绍,希望能起抛砖引玉之用..转载 2021-10-26 10:34:34 · 173 阅读 · 0 评论 -
jvm CPU100%排查
下面给出两种系统下的排查步骤,都是一模一样的,只是命令稍有区别! 查消耗cpu最高的进程PID 根据PID查出消耗cpu最高的线程号 根据线程号查出对应的java线程,进行处理。 准备一行死循环代码: Windows 服务器 查消耗cpu最高的进程PID 手边没有windows server机器,我以win 1...原创 2019-01-30 10:07:22 · 2624 阅读 · 2 评论