JVM
安心撸码
这个作者很懒,什么都没留下…
展开
-
双亲委派模型
双亲委派模型是Java类加载器所使用的模型. 双亲委派模型的工作过程:如果一个类加载器收到了类加载器的请求.它首先不会自己去尝试加载这个类.而是把这个请求委派给父加载器去完成.每个层次的类加载器都是如此.因此所有的加载请求最终都会传送到Bootstrap类加载器(启动类加载器)中.只有父类加载反馈自己无法加载这个请求(它的搜索范围中没有找到所需的类)时.子加载器才会尝试自己去加载. ...原创 2019-07-15 09:57:36 · 146 阅读 · 0 评论 -
JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof
A、jps(Java Virtual Machine Process Status Tool) jps主要用来输出JVM中运行的进程状态信息。语法格式如下: jps [options] [hostid] 如果不指定hostid就默认为当前主机或服务器。 命令行参数选项说明如下: -q 不输出类名、Jar名和传入main方法的参数 -m 输出传入main方法的参数 -l ...原创 2019-07-16 17:11:24 · 344 阅读 · 0 评论 -
JVM的4种垃圾回收算法、垃圾回收机制与总结
垃圾回收算法 1.标记清除 标记-清除算法将垃圾回收分为两个阶段:标记阶段和清除阶段。 在标记阶段首先通过根节点(GC Roots),标记所有从根节点开始的对象,未被标记的对象就是未被引用的垃圾对象。然后,在清除阶段,清除所有未被标记的对象。 适用场合: 存活对象较多的情况下比较高效 适用于年老代(即旧生代) 缺点: 容易产生内存碎片,再来一个比较大的对象时(典型情况...转载 2019-07-22 08:37:40 · 114 阅读 · 0 评论 -
JAVA内存模型
一 Java内存模型 1模型 Java内存逻辑模型如下: 所有变量都存储在主内存中。 每个线程都有自己的工作内存,工作内存中保存了线程使用到的主内存中变量的副本。 线程对变量的所有操作(读取、赋值等)都必须在工作内存中进行,不能直接操作主内存。 不同线程之间无法访问对方的工作内存。 线程之间的值传递均需通过主内存来完成。 2协议 操...转载 2019-07-30 14:10:23 · 112 阅读 · 0 评论 -
JAVA类加载机制
一、类加载 类加载分为三个步骤:加载、连接、初始化。 1.加载 类加载指的是将class文件读入内存,并为之创建一个java.lang.Class对象,即程序中使用任何类时,系统都会为之建立一个java.lang.Class对象,系统中所有的类都是java.lang.Class的实例。 类的加载由类加载器完成,JVM提供的类加载器叫做系统类加载器,此外还可以通过继承ClassLoader基类...原创 2019-08-01 19:30:40 · 166 阅读 · 0 评论 -
深入理解JVM
Java程序通过编译生成class文件,生成的class文件通过JVM(Java VirtualMachine)来运行,JVM在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,Java虚拟机所管理的内存将会包括以下几个运行时数据区域。 程序计数器(Program Counter Register) 学过《计算机组成原理》的人对于这个名词都不...原创 2019-08-01 21:18:52 · 161 阅读 · 0 评论 -
JVM常用内存参数配置
一、常用参数 -Xms JVM启动时申请的初始Heap值,默认为操作系统物理内存的1/64但小于1G。默认当空余堆内存大于70%时,JVM会减小heap的大小到-Xms指定的大小,可通过-XX:MaxHeapFreeRation=来指定这个比列。Server端JVM最好将-Xms和-Xmx设为相同值,避免每次垃圾回收完成后JVM重新分配内存;开发测试机JVM可以保留默认值。(例如:-...原创 2019-08-01 21:42:56 · 133 阅读 · 0 评论