JVM
文章平均质量分 95
涛歌依旧fly
计算机研究生,专注于Java后端技术学习。
——勇敢地奔跑
展开
-
JVM调优实战-从零开始 | 项目有关JVM调优总结
新上线一个java服务,或者是RPC或者是WEB站点,内存的设置该怎么设置呢?设置成多大比较合适,既不浪费内存,又不影响性能呢?分析依据的原则是根据JavaPerformance里面的推荐公式来进行设置。通过ps-ef|grepjava查看java进程id00000000000000通过jstat-gc查看进程service-hosp的堆内存使用情况(单位KB)-gc显示与GC相关的堆信息,年轻代、老年代、永久代等的容量、已用空间、GC时间合计等信息........原创 2022-07-22 08:22:40 · 393 阅读 · 0 评论 -
JVM-系统优化
jstat(JVMStatisticsMonitoringTool)用于监视JVM各种运行状态信息的命令行工具,可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,在没有GUI的图形界面,只提供了纯文本控制台环境的服务器上,它是运行期定位虚拟机性能问题的首选工具,常用于检测垃圾回收问题以及内存泄漏问题。线程快照的作用可用于定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等问题,用jstack显示各个线程调用的堆栈情况。.........原创 2022-07-22 08:22:01 · 313 阅读 · 0 评论 -
JVM-JVM概述
JVM全称JavaVirtualMachine,即Java虚拟机,一种规范,本身是一个虚拟计算机,直接和操作系统进行交互,与硬件不直接交互,而操作系统可以帮我们完成和硬件进行交互的工作Java虚拟机基于二进制字节码执行,由一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆、一个方法区等组成JVM屏蔽了与操作系统平台相关的信息,从而能够让Java程序只需要生成能够在JVM上运行的字节码文件,通过该机制实现的跨平台性JVM结构参考书籍https参考视频https。...原创 2022-07-22 00:45:00 · 108 阅读 · 0 评论 -
三、类加载和字节码技术
首先获得.class字节码文件方法:以下是字节码文件根据 JVM 规范,类文件结构如下魔数u4 magic对应字节码文件的0~3个字节0000000 ca fe ba be 00 00 00 34 00 23 0a 00 06 00 15 09u2 minor_version;u2 major_version;0000000 ca fe ba be 00 00 00 34 00 23 0a 00 06 00 15 0934H = 52,代表JDK8见资料文件…略可参考https://docs.orac原创 2022-07-08 07:38:01 · 217 阅读 · 0 评论 -
【代码/图 Demo解读】JVM中的强引用、软引用、弱引用、虚引用、终结器引用
下图实线表示强引用。只有所有 GC Roots 对象都不通过【强引用】引用该对象,该对象才能被垃圾回收。如果GC Roots一直通过强引用 引用该对象,那么垃圾回收器绝不会回收它,当内存空间不足,Java虚拟机宁愿抛出OOM异常,使程序异常终止。例如网络读取图片资源时,如果是用强引用 引用这些存放图片资源的bytes数组,在内存不足时会OOM。这些不太重要的资源,在内存紧张时,应该要释放掉,之后再重新读取即可。所以不要使用强引用引用这些bytes数组了,而应该采取其它的引用。所以,需要用软引用/弱引用原创 2022-06-03 10:42:59 · 201 阅读 · 0 评论 -
二、JVM垃圾回收
1、如何判断对象可以回收引用计数法弊端:循环引用时,两个对象的计数都为1,导致两个对象都无法被释放可达性分析算法JVM中的垃圾回收器通过可达性分析来探索所有存活的对象扫描堆中的对象,看能否沿着GC Root对象为起点的引用链找到该对象,如果找不到,则表示可以回收可以作为GC Root的对象虚拟机栈(栈帧中的本地变量表)中引用的对象。方法区中类静态属性引用的对象方法区中常量引用的对象本地方法栈中JNI(即一般说的Native方法)引用的对象五种引用强引用只有GC Roo原创 2022-05-28 15:43:28 · 299 阅读 · 0 评论 -
一、什么是JVM以及JVM的内存区域
一、什么是JVM?定义Java Virtual Machine,JAVA程序的运行环境(JAVA二进制字节码的运行环境)好处一次编写,到处运行自动内存管理,垃圾回收机制数组下标越界检查比较JVM JRE JDK的区别二、内存结构0、整体架构1、程序计数器作用用于保存JVM中下一条所要执行的指令的地址特点线程私有CPU会为每个线程分配时间片,当当前线程的时间片使用完以后,CPU就会去执行另一个线程中的代码程序计数器是每个线程所私有的,当另一个线程的时间片用完,又返原创 2022-05-28 10:55:11 · 109 阅读 · 0 评论