随笔分类 -  JVM

摘要:https://youzhixueyuan.com/jvm-performance-optimization.html JVM内存调优 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数。 1.Full GC 会对整个堆进行整理,包括Young、Tenured和Perm。Fu 阅读全文
posted @ 2019-09-09 16:29 予我渡北川 阅读(1857) 评论(0) 推荐(0)
摘要:概述 Java拥有动态加载类和动态连接的特性,因此其加载过程并不像其他语言在编译时就已经完成,它是动态进行的,即在程序运行过程中动态加载入内存中。 加载过程 图中,加载、验证、准备、初始化、卸载这5个阶段的顺序是确定的,类的加载过程必须按照这种顺序按部就班地开始,而解析阶段不一定:它在某些情况下可以 阅读全文
posted @ 2019-06-28 14:38 予我渡北川 阅读(168) 评论(0) 推荐(0)
摘要:定义 前面说过加载阶段是一个可以让设计人员高度自控的模块,因为类文件的源头可以是多种多样的,代码生成、反射生成或从网络中生成等。因此类加载器作为对这些文件的处理就显得尤为重要。 但类加载器的功能不仅如此,其还有一个重要的功能就是和一个类的全限定名唯一确定一个类。通俗来说,要说两个类是相同的,不仅其全 阅读全文
posted @ 2019-06-28 14:38 予我渡北川 阅读(214) 评论(0) 推荐(0)
摘要:Java 内存模型 屏蔽掉各种硬件和操作系统的内存访问差异。 1 主内存和工作内存之间的交互 2 对于 volatile 型变量的特殊规则 关键字 volatile 是 Java 虚拟机提供的最轻量级的同步机制。 一个变量被定义为 volatile 的特性: 保证此变量对所有线程的可见性。但是操作并 阅读全文
posted @ 2019-04-11 10:41 予我渡北川 阅读(193) 评论(0) 推荐(0)
摘要:哪些内存需要回收? 1、引用计数法 这个算法的实现是,给对象中添加一个引用计数器,每当一个地方引用这个对象时,计数器值+1;当引用失效时,计数器值-1。任何时刻计数值为0的对象就是不可能再被使用的。这种算法使用场景很多,但是,Java中却没有使用这种算法,因为这种算法很难解决对象之间相互引用的情况。 阅读全文
posted @ 2019-03-22 11:19 予我渡北川 阅读(842) 评论(0) 推荐(0)
摘要:(1)-Xms20M 表示设置JVM堆内存的最小值为20M,必须以M为单位 (2)-Xmx20M 表示设置JVM堆内存的最大值为20M,必须以M为单位。将-Xmx和-Xms设置为一样可以避免JVM内存自动扩展。大的项目-Xmx和-Xms一般都要设置到10G、20G甚至还要高 (3)-verbose: 阅读全文
posted @ 2019-03-21 20:27 予我渡北川 阅读(258) 评论(0) 推荐(0)
摘要:Java虚拟机(JVM)内部定义了程序在运行时需要使用到的内存区域 这些区域都有自己的用途,以及创建和销毁的时间。有些区域随着虚拟机进程的启动而存在,有的区域则依赖用户线程的启动和结束而销毁和建立。 1、线程间共享的内存区域 (1)HEAP (堆) 大多数应用,堆都是Java虚拟机所管理的内存中最大 阅读全文
posted @ 2019-03-21 19:42 予我渡北川 阅读(191) 评论(0) 推荐(0)
摘要:GC算法 标记-清除算法复制算法标记-整理算法分代收集 新生代--[15次GC]-->老年代新生代:复制算法老年代: 标记-清除算法或标记-整理算法 GC策略采用的何种算法引用计数算法根搜索算法 内存泄漏和内存溢出的区别jvm 无法gc的内存 造成内存泄漏 举例:数组 stopWorld[Full 阅读全文
posted @ 2017-12-25 11:35 予我渡北川 阅读(197) 评论(0) 推荐(0)