
JVM
王珂_wangke
开开心心搬砖, 高高兴兴挣钱
展开
-
从docker 中抓取jvm heap 信息, 并且分析
1, 查看JVM进程# jps-----------------------------11921 WrapperSimpleApp4082 Jps9768 QuorumPeerMain10363 Bootstrap直接使用 jsp 命令, 会发现, 在top 命令中 很多的java 进程并不存在,#top PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 20884 roo原创 2020-10-30 09:50:46 · 1159 阅读 · 0 评论 -
进阶学习(4.3) JVM 垃圾回收算法
1, 引用计数法Object a = new Object(), 引用计数为0 Object b = a; 计数 +1 a = null 计数为0, 对象将被回收 b 也是垃圾对象引用计数法有很大的缺点, 无法解决循环引用, a = c ; b = a; c = b;java 中的对象引用是非常频繁的, 会操作频繁的计数, 消耗性能2, 标记清除法必须先知道GC Root 是什么, 可以参考我写的另一篇博客https://blog.youkuaiyun.com/weix...原创 2020-09-08 09:39:29 · 205 阅读 · 0 评论 -
进阶学习(4.4) JVM GC Root 判定, 垃圾的判定
要先知道标记清除法, 必须先知道什么是GCRoots,根节点, 常见有类静态字段 常量 静态代码块 第一栈变量, 网上没有案例说明, 都是复制粘贴的也没说清楚什么是Root 虚拟机栈1, 先产生一个垃圾对象这里解释第一栈变量, 理解为就是main 方法中, 中的变量,public static void main(String[] args) { // Root Var User userA = new User(); userA.原创 2020-09-07 22:23:29 · 473 阅读 · 0 评论 -
进阶学习(4.2) JVM 常用配置参数, GC 参数
-XX:+PrintGC 打印GC执行信息-XX:+PrintGCDetails 打印堆使用信息 PSYoungGen 新生代 eden 伊甸区 from 幸存区 to 幸存区 ParOldGen 老年代 Metaspace 元空间, 就是永久代, 1,8 以后使用的本地内存-Xloggc:log/gc.log 使用外部文件记录CG-XX:+TraceClassLoading 记录JVM加载的类-Xmx20m 配置堆最大大小...原创 2020-09-07 20:50:27 · 211 阅读 · 0 评论 -
进阶学习(4.1) JVM结构和原理
1, Java 文件是怎么运行的编译java 成 class文件 执行带有主方法的class文件 找到jvm.cfg, jvm配置文件, 里面配置了JVM.DLL的C++, JVM实现 类加载器开始加载类进入JVM 找到主类然后运行原创 2020-09-06 19:50:31 · 246 阅读 · 0 评论