
jvm
养猫还是养狗?
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java内存模型
由于计算机的存储设备与处理器的运算速度由几个数量级的差距,所以现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存(Cache)来作为内存与处理器之间的缓冲:将运算需要使用到的数据复制到缓存中,让运算能快速的运行,当运算结束再从缓存中同步回内存中,这样处理器就不需要等待缓慢的读写了。基于告诉缓存的存储交互很好的解决了处理器与内存的速度矛盾,但这也为计算机系统带来更高的复杂度...原创 2019-01-10 15:56:33 · 99 阅读 · 0 评论 -
双亲委派模型
层次关系:自定义类加载器--》应用程序类加载器--》扩展类加载器--》启动类加载器这种类加载器之间额层次关系,被称为类加载器的双亲委派模型。双亲委派模型除了要求顶层的启动类加载器模型外,其余的类加载器都应当有自己的父类加载器。这里类加载器之间的父子关系一般不会以继承的关系来实现,而是以组合的关系来复用父加载器的代码。 继承与组合(转载):https://www.cnblogs.c...原创 2019-01-10 11:14:17 · 105 阅读 · 0 评论 -
虚拟机类加载机制,类加载器
虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制。java语言的类的加载,连接(验证,准备,解析)和初始化过程都是在运行期间完成的,这种方式会令类加载时增加一些性能开销,但是却会为Java应用程序提高高度的灵活性,Java里天生可以动态扩展的语言特性就是依赖运行期动态加载和动态连接这个特点实...原创 2019-01-08 14:45:04 · 110 阅读 · 0 评论 -
内存分配
1对象优先在Eden分配在大多数情况下,对象在新生代Eden区中分配,当Eden区没有足够的空间进行分配时,虚拟机将发起一次Minor GC,一般情况下,新生代Eden与Survivor(2个,一个是from,一个是to)比例为8:1:1,因为新生代中的对象80%以上都是“朝生夕死”,所以垃圾回收算法使用的是复制算法,不会产生空间碎片。Eden满了的时候,gc就把所有在Eden中的对象扫描一次...原创 2019-01-07 20:03:19 · 672 阅读 · 0 评论 -
垃圾收集算法
什么是垃圾回收机制?jvm不定时清理堆内不可达对象。(不再经常使用的对象)需要知道两个概念,引用计数法和可达性分析https://blog.youkuaiyun.com/weixin_43844810/article/details/856775961标记清除算法首先标记出所要回收的对象,在标记完成后统一回收,他的标记过程就是通过可达性分析算法或引用计数算法判断对象是否是不可用的。(老年代...原创 2019-01-03 10:51:12 · 130 阅读 · 0 评论 -
java线程调度
线程调度是指系统为线程分配处理器使用权的过程,主要调度方式有两种:分别是协同式线程调度和抢占式线程调度。协同式调度:线程的执行时间由线程本身来控制,线程把自己的工作执行完了之后,要主动通知系统切换到另外一个线程上。协同式多线程最大的好处就是实现简单,而且由于线程要把自己的事情干完之后才会线程切换,切换操作对线程自己是可知的,没有什么线程同步的问题。缺点是:线程执行时间不可控制,甚至...原创 2019-01-12 17:03:54 · 241 阅读 · 0 评论 -
引用
强引用(Strong Reference)强引用类似 Object A=new Object(); 这类的引用,只要强引用还在,垃圾收集器永远不会回收掉被引用的对象。软引用( Soft Reference)软引用用来描述一些还有用但并非必须的对象。对于软引用关联着的对象,在系统将要发生内存溢出之前,将会把这些对象列入回收范围之中进行第二次回收。如果这次回收还没有足够的内存,才会抛出内存溢...原创 2019-01-03 10:12:28 · 402 阅读 · 0 评论 -
引用计数算法,可达性分析算法
引用计数算法:很多教科书判断对象是否存活的算法是这样的:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的。但是,主流的java虚拟机中没有选用引用计数法来管理内存,其中最主要的原因是他很难解决对象之间互相循环引用的问题。例如:public static void testGC(){ ...原创 2019-01-03 09:59:21 · 578 阅读 · 0 评论 -
垃圾收集器
串行收集器和并行收集器区别?串行:单线程收集垃圾,效率低并行:多线程(电脑核数有关),效率高Serial收集器这个收集器是一个单线程的收集器,他的单线程的意义并不是说明他只会使用一个CPU或一条收集线程去完成垃圾收集工作。更重要的是他在进行垃圾收集时,必须暂停其他所有的工作线程,直到结束(Stop The World这项工作是由虚拟机在后台自动发起执行的,将用户正常工作的线程全部停...转载 2019-01-07 16:22:37 · 212 阅读 · 0 评论 -
HotSpot算法实现
枚举根节点以可达性分析中从GC Roots节点找引用链为例,节点主要是全局的引用(常量或静态属性),与执行上下文(如栈帧中的本地变量表),现在很多应用仅方法区就有数百兆,当检查这里面的引用时,必然消耗很多的时间。另外,在进行这项分析时,整个执行系统要冻结在某个时间节点上,不可以出现分析过程中,对象的应用关系还在不断变化的情况,如果不满足的话分析的准确性就无法得到保证。这点是导致GC进行时必须要...转载 2019-01-07 14:23:13 · 210 阅读 · 0 评论 -
Java内存结构,Jvm分区
运行时数据区域:方法区(Method Area):static关键字修饰:常量信息当class文件被加载时会初始化,所有线程共享 虚拟机栈(VM Stack):后进先出栈 ,线程私有 定义基本局部变量,栈代码运行完毕后,自动释放内存 本地方法栈(Native Method Stack):后进先出栈 ,线程私有,支撑Native方法的调用...原创 2019-01-02 17:30:40 · 264 阅读 · 0 评论 -
JVM参数调优参数配置以及使用IDEA对jvm参数修改测试分析
在虚拟机运行的过程中,如果可以跟踪系统的运行状态,那么对于问题的故障排查会有一定的帮助,为此,在虚拟机提供了一些跟踪系统状态的参数,使用给定的参数执行Java虚拟机,就可以在系统运行时打印相关日志,用于分析实际问题。我们进行虚拟机参数配置,其实就是围绕着堆、栈、方法区、进行配置,也就是参数调优。堆的参数配置:-XX:+PrintGC 每次触发GC的时候打印相关日志-XX:+U...原创 2019-05-09 11:55:16 · 981 阅读 · 0 评论