
JVM
文章平均质量分 95
Please Sit Down
Fake it,until make it!
展开
-
线程到底设置数量多少合适的探讨
一个极端的线程(不停执行“计算”型操作时),就可以把单个核心的利用率跑满,多核心CPU最多只能同时执行等于核心数的“极端”线程数如果每个线程都这么“极端”,且同时执行的线程数超过核心数,会导致不必要的切换,造成负载过高,只会让执行更慢I/O 等暂停类操作时,CPU处于空闲状态,操作系统调度CPU执行其他线程,可以提高CPU利用率,同时执行更多的线程I/O 事件的频率频率越高,或者等待/暂停时间越长,CPU的空闲时间也就更长,利用率越低,操作系统可以调度CPU执行更多的线程。原创 2024-01-12 10:23:41 · 1107 阅读 · 0 评论 -
JVM 性能调优
配置完线程数之后,我们的请求的平均响应时间和GC时间都有一个明显的减少了,仅从效果上来看,我们这次的优化是有一定效果的。大家在工作中对于线上项目进行优化的时候,可以考虑到这方面的优化。原创 2023-12-08 10:34:02 · 690 阅读 · 0 评论 -
JVM 运行时参数
面试题JVM的参数,你知道的说一下 (百度)说说你知道的几种主要的JVM参数(京东)JVM调优调的哪些参数?在哪里写这些参数?(亚信)内存调优参数都有什么?(顺丰)JVM调优调的哪些参数?问这样有什么好处?在哪里写这些参数(浪潮)原创 2023-12-07 15:50:42 · 619 阅读 · 0 评论 -
JVM GUI可视化监控及诊断工具
MAT(Memory Analyzer Tool)工具是一款功能强大的Java堆内存分析器。可以用于查找内存泄漏以及查看内存消耗情况。MAT是基于Eclipse开发的,不仅可以单独使用,还可以作为插件的形式嵌入在Eclipse中使用。是一款免费的性能分析工具,使用起来非常方便。大家可以在https://www.eclipse.org/mat/downloads.php下载并使用MAT。只要确保机器上装有JDK并配置好相关的环境变量,MAT可正常启动。原创 2023-12-07 11:49:36 · 1073 阅读 · 0 评论 -
JVM 命令行监控及诊断工具
性能诊断是软件工程师在日常工作中需要经常面对和解决的问题,在用户体验至上的今天,解决好应用的性能问题能带来非常大的收益。Java 作为最流行的编程语言之一,其应用性能诊断一直受到业界广泛关注。可能造成 Java 应用出现性能问题的因素非常多,例如线程控制、磁盘读写、数据库访问、网络I/O、垃圾收集等。想要定位这些问题,一款优秀的性能诊断工具必不可少。体会1:使用数据说明问题,使用知识分析问题,使用工具处理问题。体会2:无监控、不调优!简单命令行工具。原创 2023-12-07 10:10:08 · 365 阅读 · 0 评论 -
JVM 分析GC日志
输出gc日志信息,默认输出到标准输出。原创 2023-12-06 15:50:41 · 332 阅读 · 0 评论 -
JVM 垃圾回收
什么是垃圾( Garbage) 呢?垃圾是指在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾。外文:An object is considered garbage when it can no longer be reached from any pointer in the running program.如果不及时对内存中的垃圾进行清理,那么,这些垃圾对象所占的内存空间会一直保留到应用程序结束,被保留的空间无法被其他对象使用。甚至可能导致内存溢出。原创 2023-12-06 15:19:09 · 1054 阅读 · 0 评论 -
JVM 执行引擎篇
动态编译(compile during run-time),英文称Dynamic compilation;Just In Time也是这个意思。HotSpot对bytecode的编译不是在程序运行前编译的,而是在程序运行过程中编译的。HotSpot里运行着一个监视器(Profile Monitor),用来监视程序的运行状况。Java字节码(class文件)是以解释的方式被加载到虚拟机中(默认启动时解释执行)。程序运行过程中,那一部分运用频率大,那些对程序的性能影响重要。原创 2023-12-06 10:39:35 · 1432 阅读 · 0 评论 -
JVM 对象内存布局篇
1、new对象最常见的方式变形1:X的静态方法变形2:XxxBuilder/XxxFactory的静态方法2、Class的newlnstance0:反射的方式,只能调用空参的构造器,权限必须是public3、Constructor的newinstance(X):反射的方式,可以调用空参、带参的构造器,权限没有要求,实用性更广4、使用clone():不调用任何构造器,当前类需要实现Cloneable接口,实现clone(),默认浅拷贝int age;原创 2023-12-06 09:18:21 · 271 阅读 · 0 评论 -
JVM 运行时内存篇
Java虚拟机栈是什么?Java虚拟机栈(Java Virtual Machine Stack),早期也叫Java栈。每个线程在创建时都会创建一个虚拟机栈,其内部保存一个个的栈帧(Stack Frame),对应着一次次的Java方法调用。是线程私有的。生命周期生命周期和线程一致。特点栈是一种快速有效的分配存储方式,访问速度仅次于程序计数器。如何理解栈管运行,堆管存储?面试题堆和栈的区别、谁的性能更高(艾绒软件)为什么要把堆和栈区分出来呢?栈中不是也可以存储数据吗?(阿里)原创 2023-12-04 11:38:58 · 653 阅读 · 0 评论 -
JVM 类的加载
类模板对象所谓类模板对象,其实就是Java类在JVM内存中的一个快照,JVM将从字节码文件中解析出的常量池、类字段、类方法等信息存储到类模板中,这样JVM在运行期便能通过类模板而获取Java类中的任意信息,能够对Java类的成员变量进行遍历,也能进行Java方法的调用。反射的机制即基于这一基础。如果JVM没有将Java类的声明信息存储起来,则JVM在运行期也无法反射。类模型的位置加载的类在JVM中创建相应的类结构,类结构会存储在方法区(JDK1.8之前:永久代;JDK1.8及之后:元空间)。原创 2023-12-01 14:31:48 · 238 阅读 · 0 评论 -
JVM 字节码
Java 虚拟机不和包括 Java 在内的任何语言绑定,它只与“Class 文件”这种特定的二进制文件格式所关联。无论使用何种语言进行软件开发,只要能将源文件编译为正确的Class文件,那么这种语言就可以在Java虚拟机上执行。可以说,统一而强大的Class文件结构,就是Java虚拟机的基石、桥梁。想要让一个Java程序正确地运行在JVM中,Java源码就必须要被编译为符合JVM规范的字节码。Java SE规范。原创 2023-11-30 17:32:10 · 396 阅读 · 0 评论