jvm
王小禾
武汉理工大学
展开
-
Java进程的内存与占用系统内存的研究
1.问题1-Xms4g -Xmx4g -Xmn1g启动该java进程,那么该进程占用机器内存情况是什么样的呢?A:进过查看GClog及top、pmap看机器内存使用情况,发现以下实践真知:1.进程启动后,该进程占用机器村内逐步增大,如500M、1g,期间会进行YGC,对此影响不大;2020-xx-04T09:03:32.529+0800: 41.575: [GC (Allocation Failure) [PSYoungGen: 839680K->13428K(990720K)] 887823原创 2020-07-17 00:15:46 · 517 阅读 · 0 评论 -
JVM参数列表
本文将对JVM常见调优作总结,包括JVM的参数原创 2020-06-27 15:49:53 · 266 阅读 · 0 评论 -
JVM_4调优
方法区:之前称为永久代,后来又称为Metaspace。原创 2020-02-28 20:12:47 · 106 阅读 · 0 评论 -
JVM_3工具
如tomcat中这样改:方法区即Metaspace也可以OOMjava死锁的例子:排查堆详情工具:会有重合,推荐jvisualvm工具。可以下载一个visual gc的插件。 在jvisualvm中选择【工具-插件】即可。可以连接到远程看liunx上的。第三方工具阿里的:arthas点开怀疑的:右键可以看到更多功...原创 2020-02-27 23:29:54 · 195 阅读 · 0 评论 -
JVM_2 GC截图版
上述设计不合理,会有碎片问题。怎么知道对象的年龄呢? 对象头中会有记录的(见前文的图片)young存满了,又会young gc,又有碎片问题。young会gc,没有eden或s0 S1 gc的概念。一旦 OLD区都没有空间了,就会OOM。算法:【标记-清除】 会扫描整个堆,比较耗时。会产生大量不连续的空间。【标记-整理】:比较耗时【标记-复制】像s...原创 2020-02-26 20:58:56 · 210 阅读 · 0 评论 -
JVM_1内存
jdk: 有编译器帮我们javac进行编译了。javac Person.java 编译 生成Person.class文件sublime可以查看2进制或16进制,查看 编码。oracle官网会有说明。16进制,u2表示两位数。开头都是cafe babe反编译 :javap -c XXX.class > XXX.java...原创 2020-02-25 20:32:19 · 153 阅读 · 0 评论 -
记一次排查NN CPU过高线程卡住问题
背景在使用 hadoop fs -ls /xxx 或 hadoop fs -du -h /xxx时,出现特别卡顿的情况。怀疑namenode机器大CPU进程占用。由此开始排查之旅。过程登录nn机器(active和standby都要看),查看top数。关于top的使用通常使用top H,H表示显示进程和线程,默认只看进程。top H PID USER PR NI ...原创 2019-12-12 22:16:49 · 1195 阅读 · 0 评论 -
jvm垃圾回收的补充
1 对象在内存中的状态及引用 2 内存泄漏常见的垃圾回收器 1 评价GC的指标2 垃圾回收器的分类 1. 对象在内存中的状态及引用当垃圾回收机制实施监控到某个对象不再被引用变量所引用时,垃圾回收就会回收它所占用的空间。可达状态:对象被创建后有一个以上的引用变量引用它。有向图顶点(如main)可达的对象都处于可达状态。 可恢复状态:对象失去引用后并不会立即回收,而是进入可恢复状态。经过fina原创 2017-09-24 14:59:49 · 182 阅读 · 0 评论 -
JVM(4)垃圾回收
判断对象存活算法 引用计数算法根搜索算法垃圾回收算法标记-清除算法复制算法标记整理压缩算法分代回收算法Java堆中存放着大量的Java对象实例,在垃圾收集器回收内存前,第一件事情就是确定哪些对象是“活着的”,哪些是可以回收的。1. 判断对象存活算法 引用计数算法引用计数算法是判断对象是否存活的基本算法:给每个对象添加一个引用计数器,没当一个地方引用它的时候,计数器值加1;当引用失效后原创 2017-08-14 16:49:11 · 208 阅读 · 0 评论 -
jvm(3)类加载器
1.读书笔记(java疯狂讲义18章)(1)JVM和类运行某个java程序,命令就会启动一个java虚拟机进程。不管多少线程,都处于该java虚拟机进程中。多个线程、所有变量都处于同一个进程里,都使用该JVM进程内存区。 java程序结束时,JVM结束。内存中的状态丢失。如下:public class A{ public static int a = 6;}即使class ATest1中原创 2017-08-13 16:49:29 · 200 阅读 · 0 评论 -
jvm(3)类加载器
1.classloader的理解 java程序(class文件)并不是本地可以执行的程序。当运行java程序时,首先运行JVM,然后再把java class加载到JVM中,负责加载class的部分就是classloader。原创 2017-08-12 19:13:42 · 172 阅读 · 0 评论 -
JVM(2)架构
Java虚拟机简介“Java虚拟机”可能指如下三个不同的东西抽象规范一个具体的实现一个运行中的虚拟机实例每个Java程序都运行在某个具体的Java虚拟机实现的实例上。一个Java虚拟机的实例负责运行一个Java程序。当启动一个Java程序的时候,一个虚拟机的实例也就诞生了。当该程序关闭退出时,这个虚拟机实例也就随之消亡。线程介绍在Java虚拟机内部有两种线程:守护线程:通常是由虚拟机自己使原创 2017-08-11 22:19:23 · 156 阅读 · 0 评论