zoukankan      html  css  js  c++  java
  • JVM基础入门

    内存模型

    我理解的jvm:

    个人理解的jvm流程:
    .java反编译为.class文件 经类加载器到上图的内存模型
    
    方法区:存静态 常量区(String在里面) 
    本地栈区:调本地服务其它库的方法
    计数器:线程计数器(了解)
    栈区:据其名知其意 就是栈 栈区别于队列 先进后出 后进先出
             一个线程就会有一个栈
            存方法和基本数据类型  
            例子:一个线程中调a方法 a进栈 a方法中调了b方法 b再进栈 以此类推
                    b方法跑完后 b就出栈 之后a跑完a再出栈
        正因为出栈 所以栈区一般情况下比较小 也不会出现内存泄露
    
    堆区:存对象 数组 
      jdk1.8后堆没了永久区 多了个元空间 方法区在元空间里面 即常量也是在栈区中了 堆区不同栈区 只有一个 一般情况下内存泄漏都是堆区 默认堆分配的最小内存xms是物理机的1
    /64 最大内存xmx是1/4 堆区分年轻区(伊甸区|幸存0区|幸存1区) 老年区 元空间

     其中的堆区是重点

    堆GC过程:

    每次new新对象 都是在年轻区的伊甸区中 伊甸区满了 jdk会触发了GC伊甸区
     将还存活对象移到幸存区 
    默认GC触发15次后会Full GC整个年轻区 将还存活对象移到老年区 若还满了就会内存溢出OOM

    调优工具及调优方式

  • 相关阅读:
    手机qq2005 没声音
    使用VBS访问外部文本文件一些方法和脚本实例
    sqlserver 备份恢复 学习笔记
    SQL Server中truncate、delete和drop的异同点
    性能诊断
    列整合一例
    XML导入属性数据【经典】
    读取文本行
    利用TcpClient TcpListener 实现发送图片
    德云社的十三香词
  • 原文地址:https://www.cnblogs.com/hbhb/p/14364766.html
Copyright © 2011-2022 走看看