JVM优化
文章平均质量分 92
小强同志
这个作者很懒,什么都没留下…
展开
-
JVM运行情况预估
这个因为之前已经大概知道Young GC的频率,假设是每5分钟一次,那么可以执行命令 jstat -gc pid 300000 10 ,观察每次结果eden, survivor和老年代使用的变化情况,在每次gc后eden区使用一般会大幅减少,survivor和老年代都有可能增长,这些增长的对象就是每次 Young GC后存活的对象,同时还可以看出每次Young GC后进去老年代大概多少对象,从而可以推算出老年代对象增长速率。然后就要检查下代码对应的地方,看下是否有问题代码的存在,比如找到了下面的类似代码。原创 2024-09-27 18:32:33 · 918 阅读 · 0 评论 -
JVM调优实战及常量池详解二
GC日志详解对于java应用我们可以通过一些配置把程序运行过程中的gc日志全部打印出来,然后分析gc日志得到关键性指标,分析 GC原因,调优JVM参数。 打印GC日志方法,在JVM参数里增加参数‐XX:+PrintGCDetails ‐XX:+PrintGCTimeStamps ‐XX:+PrintGCDateStamps ‐Xloggc:./gc.log Tomcat则直接加在JAVA_OPTS变量里。如何分析GC日志 下图中是我截取的JVM刚启动的一部分GC日志我们可以看到图中第原创 2022-02-04 15:11:36 · 186 阅读 · 0 评论 -
JVM调优工具详解一
Jmap此命令可以用来查看内存信息。实例个数以及占用内存大小打开log.txt,文件内容如下:num:序号 instances:实例数量 bytes:占用空间大小 class name:类名称,[C is a char[],[S is a short[],[I is a int[],[B is a byte[],[[I is a int[][]堆信息堆内存dump也可以设置内存溢出自动导出dump文件(内存很大的时候,可能会导不出来)1. -XX...原创 2022-02-04 13:27:50 · 294 阅读 · 0 评论 -
垃圾收集器ParNew&CMS&G1详解
1.垃圾收集器如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。虽然我们对各个收集器进行比较,但并非为了挑选出一个最好的收集器。因为直到现在为止还没有 最好的垃圾收集器出现,更加没有万能的垃圾收集器,我们能做的就是根据具体应用场景选择适合 自己的垃圾收集器。试想一下:如果有一种四海之内、任何场景下都适用的完美收集器存在,那么 我们的Java虚拟机就不会实现那么多不同的垃圾收集器了。1.1 Serial收集器(-XX:+UseSerialGC -XX:+UseSerial原创 2022-02-03 20:42:41 · 1781 阅读 · 0 评论 -
JVM内存分配机制与垃圾回收算法
1.JVM内存分配与回收 1.1 对象优先在Eden区分配 大多数情况下,对象在新生代中 Eden 区分配。当 Eden 区没有足够空间进行分 配时,虚拟机将发起一次Minor GC。我们来进行实际测试一下。 在测试之前我们先来看看 Minor GC和Full GC 有什么不同呢?...原创 2022-02-03 10:05:49 · 697 阅读 · 0 评论 -
JVM内存模型深度剖析
一、JVM整体结构及内存模型二、JVM内存参数设置Spring Boot程序的JVM参数设置格式(Tomcat启动直接加在bin目录下catalina.sh文件里):java ‐Xms2048M ‐Xmx2048M ‐Xmn1024M ‐Xss512K ‐XX:MetaspaceSize=256M ‐XX:MaxMetaspaceSize=256M ‐jar microservice‐eurek a‐server.jarStackOverflowError示例:// JVM设置 ‐X.原创 2022-02-02 22:26:11 · 568 阅读 · 0 评论 -
类加载机制深度剖析
1、类加载过程 多个java文件经过编译打包生成可运行jar包,最终由java命令运行某个主类的main函数启 动程序,这里首先需要通过类加载器把主类加载到JVM。 主类在运行过程中如果使用到其它类,会逐步加载这些类。 注意,jar包里的类不是一次性全部加载的,是使用到时才加载。 类加载到使用整个过程有如下几步: 加载 >> 验证 >> 准备 >> 解析 >> 初始化 >> 使用 >> 卸载加载:在硬盘原创 2022-02-02 21:42:54 · 199 阅读 · 0 评论