JVM
JVM
xp_1711
这个作者很懒,什么都没留下…
展开
-
jvm调优CPU突然飙问题定位
基本概念内存泄漏内存溢出(一定是代码问题)调优用到的工具jdk自带的原声工具 分类 名称 作用 命令行工具 jps 虚拟机状况查询 jsatck java堆栈跟踪工具 jinfo java配置信息工具 jmap java内存映像工具 jstat 虚拟机统计信息监视工具 可视化监控工具 jconsole Java监视与管理控制台 visualVM 多台合一故障处理工具 可视化监控工具:需要服务器开通一个调试端口,正式环境原创 2020-10-11 16:27:43 · 452 阅读 · 0 评论 -
jvm GC基础
什么是垃圾简单说就是内存中已经不再被使用到的空间就是垃圾怎么判断是垃圾引用计数:(python在用)每个对象有一个引用计数属性,新增一个引用时计数加1,引用释放时计数减1,计数为0时可以回收。此方法简单,无法解决对象相互循环引用的问题。可达性分析(Reachability Analysis)又称为根可达:(Java在用)GCroots,或者说tracingGC的“根集合”就是一组必须活跃的引用基本思路就是通过一系列名为”GCRoots”的对象作为起始点,从这个被称为GC Roots的对象开始向原创 2020-09-20 18:39:42 · 148 阅读 · 0 评论 -
堆的参数调整
堆的参数调整入门调优参考堆结构jdk1.7Young Gen(-Xmn):新生代【-Xmn:新生代的大小,默认是1/3】JVM Heap(-Xms -Xmx):老年代【-Xms:老年带的初始大小;-Xmx老年代的最大大小】-XX:PermSize:永久代的默认值-XX:MaxPermSize:永久代的最大值jdk1.8:将永久代取消换成元空间,元空间存储在物理内存。因此,默认情况下,元空间的大小仅受本地内存的限制。类的元数据放入native memoty,字符串池 和类的静态变量放原创 2020-09-13 17:52:31 · 279 阅读 · 0 评论 -
堆
堆的基本概念一个JVM实例只存在一个堆内存,堆内存的大小是可以调节的。类加载器读取了类文件后。需要把类、方法、常变量放到堆内存中,保存所有引用类型的真实信息,以方便执行器执行。堆内存分为三部分:新生代、老年代、永久代new Dog() 出来对象首先存在Enden区;每次Eden区每执行一次垃圾回收,存活的对象会首次进入到survivor0区,该对象的年龄会变成1;survivor0区执行一次垃圾回收,存活下来的对象会进入到survivor1区,同时该对象的年龄会加一岁;survivor1区.原创 2020-08-09 20:27:45 · 119 阅读 · 0 评论 -
栈
一、基本介绍补充知识栈管运行,堆管存储理解中:程序 = 算法+数据结构面试中:程序=框架+业务逻辑数据结构中的两种数据接口队列(FIFO):先进先出(类比排队)栈(FILO):先进后出(类比弹夹)例子//例子try{ ..........}catch(Exception e){ e.printStatckTrance()}finally{}栈定义栈也叫栈内存,主管Java程序的运行,是在线程创建时创建,它的生命周期是跟随线程的生命周期,线程结束栈内存也就释放原创 2020-08-02 22:50:15 · 105 阅读 · 0 评论 -
方法区
方法区线程共享实例变量存在堆内存中与方法区无关方法区的概念提供线程运行时的内存区域,各个线程共享。它存储了每一个类的结构信息,例如运行时的常量池、字段、方法和数据以及构造函数和普通方法的字节码内容。以上将的是规范,在不同虚拟机里面的实现是不一样的,最典型的就是永久代与元空间。例如: List list = new ArraryList();//等号左边是规范,右边是实现。...原创 2020-07-21 22:41:54 · 110 阅读 · 0 评论 -
PC寄存器
PC寄存器概念每个线程都有一个程序计数器,是线程私有的,其实就是一个指针,指向方法区中的字节码 (用来存储下一条指令的地址,也就是也即将要执行的指令代码),由执行引擎读取下一条指令,是一个非常小的内存空间,几乎可以忽略不记。这块内存区域很小,它是当前线程所执行的字节码的行号指示器,字节码解释器通过改变这个计数器的数值来选取下一条需要执行的字节码指令。如果执行的是一个Native方式,那这个计数器是空的。用以完成分支、循环、跳转、异常处理、线程恢复等基础功能。不会发生内存溢出(OutOfMemory.原创 2020-07-12 01:11:18 · 337 阅读 · 0 评论 -
native本地接口
jvm模型图native(本地方法接口)本地接口的作用就是融合不同的编程语言为Java所用,它的初衷是融合C/C++程序,换而言之,Java的刚出现的时候(1995年10月)正式C/C++横行的时候,如果没有调用C/C++的程序很难立足,于是在内存中专门开辟了一块区域处理标记为native的方法,在Execution Engine执行的时候加载native libraies。目前该方法使用的越来越少了,除非是与硬件有关的应用,比如通过Java程序驱动打印机或者Java系统管理生产设备,在企业级应用中原创 2020-07-06 21:23:39 · 787 阅读 · 1 评论 -
双亲委派机制与沙箱安全
双亲委派机制双亲委派机制介绍:程序加载某个类,查找过程(从父级开始找):现在bootstrap ClassLoaer下,找不到就会去 Extension ClassLoaer 下找如果在Extension ClassLoaer 找不到就会去App ClassLoaer找如果在App ClassLoaer找不到,一般就会抛出class not found 异常解释:当一个类收到了类的加载请求,他首先不会自己去加载这个类,而是把这个请求委派给父亲去完成,每一层的类加载器都是如此,只有当父类加原创 2020-07-05 14:37:06 · 625 阅读 · 0 评论 -
类的加载器基本概念
类的加载器工作图负责加载class文件,class文件在文件开头有特定的文件标识,将class文件的字节码内容加载至内存中,并将哲学内容转换成方法区中的运行时数据结构并且Class Loader只是负责文件的加载,至于它是否可以运行,则由Exection Engine决定的ClassLoader 如何识别class文件class文件在文件开头有特定的文件标识(cofe babe),并不是根据class文件后缀。理解ClassLoader 将class文件变成成Class?联想Java反射:根据原创 2020-07-05 11:56:20 · 182 阅读 · 0 评论 -
java可视化监控工具
jconsole.exe在jdk安装报下的bin目录下有jconsole.exe执行文件(17K),源码在lib目录下的tools.jar2. jsp在命令行中执行jps可以查看Java运行的进程4.5.原创 2020-07-05 10:34:18 · 175 阅读 · 0 评论 -
jvm体系介绍
jvm体系结构图基本概念方法区:存储模板堆区:存储数据Java栈区:存放指针原创 2020-07-05 10:31:41 · 99 阅读 · 0 评论 -
jvm目录
内存溢出原创 2020-07-04 19:15:44 · 106 阅读 · 0 评论 -
java GC概述
文章目录Java GC原理概述Java GC(garbage collec,垃圾收集,回收)1.年轻代的GC(存放实例化的对象)2.老年代的GC(存放较大的实例化的对象和在年轻代中存活了足够久的对象)3.永久代的GC(存放常量、类)Java垃圾回收概况Java内存区域Java对象的访问方式Java内存分配机制Java GC机制垃圾收集器Java GC原理概述Java GC(garbage co...翻译 2019-04-02 10:37:28 · 6646 阅读 · 4 评论 -
Java面试知识点解析——JVM篇
文章目录一、JVM 基础知识2)什么是 JVM ?3)JVM 由哪些部分组成?4)类加载器是有了解吗?面试官:Java 虚拟机是如何判定两个 Java 类是相同的?5)类加载器是如何加载 class 文件的?面试官:能详细讲讲吗?6)双亲委派模型(Parent Delegation Model)?面试官:双亲委派模型的工作过程?面试官:为什么这样设计呢?二、JVM 内存管理1)JVM 内存划分:2...翻译 2019-06-24 08:27:34 · 143 阅读 · 0 评论