
JVM系列
文章平均质量分 81
JVM系列
1 Byte
某互联网公司平台团队的打工人一枚
展开
-
Tomcat类加载机制与JVM类加载机制对比
类加载 在JVM中并不是一次性把所有的文件都加载到,而是一步一步的,按照需要来加载。 比如JVM启动时,会通过不同的类加载器加载不同的类。当用户在自己的代码中,需要某些额外的类时,再通过加载机制加载到JVM中,并且存放一段时间,便于频繁使用。 因此使用哪种类加载器、在什么位置加载类都是JVM中重要的知识。JVM类加载 JVM类加载采用 父类委托机制,如下图所示: JVM中包括集中类加载器: 1 BootStrapClassLoader 引导类加载器 2 ..原创 2020-05-18 22:37:59 · 20303 阅读 · 0 评论 -
JVM垃圾收集算法与垃圾收集器(Serial、ParNew、CMS) —JVM系列(四)
目前大多数垃圾收集器都是采用的分代收集算法,该算法其实算是一种思想:根据对象存活周期的不同而将内存分为年轻代和老年代,这样就可以根据各个年代的特点选择合适的垃圾收集算法。比如在年轻代中,每次收集都会有绝大多数对象死去(没有被GC root所引用),可以选择复制算法,只需要付出少量对象的复制成本就可以完成每次垃圾收集;而老年代中的对象存活几率比较高,并且没有额外的空间对其进行分配担保,所以选择标记清除算法或者标记整理算法进行垃圾回收;需要注意,通常来讲标记清除算法或标记整理算法会比复制算法慢上许多!原创 2023-04-09 18:24:40 · 1956 阅读 · 3 评论 -
简析jvm的调优方案
调优时机:heap 内存(老年代)持续上涨达到设置的最大内存值;Full GC 次数频繁;GC 停顿时间过长(超过1秒);应用出现OutOfMemory 等内存异常;应用中有使用本地缓存且占用大量内存空间;系统吞吐量与响应性能不高或下降。调优原则:多数的Java应用不需要在服务器上进行JVM优化;多数导致GC问题的Java应用,都不是因为我们参数设置错误,而是代码问题;在应用上线之前,先考虑将机器的JVM参数设置到最优(最适合);减少创建对象的数量;减少使用全局变量和大对象;原创 2021-09-28 08:52:21 · 1172 阅读 · 0 评论 -
JVM中对象创建与内存分配机制—JVM系列(三)
前言:学习本章前先阅读之前我写的关于JVM系列的前两篇文章:JVM类加载机制深入浅出分析 -- JVM系列(1)JVM内存模型 -- JVM系列(2)原创 2020-11-12 10:52:38 · 22462 阅读 · 14 评论 -
JVM的垃圾回收机制 总结(垃圾收集、回收算法、垃圾回收器)
一、 技术背景你要了解吧 按照套路是要先装装X,谈谈JVM垃圾回收的前世今生的。说起垃圾回收(GC),大部分人都把这项技术当做Java语言的伴生产物。事实上,GC的历史比Java久远,早在1960年Lisp这门语言中就使用了内存动态分配和垃圾回收技术。设计和优化C++这门语言的专家们要长点心啦~~二、 哪些内存需要回收? 猿们都知道JVM的内存结构包括五大区域:程序计数器、虚拟机栈...转载 2019-12-21 10:01:40 · 1297 阅读 · 1 评论 -
JVM常用指令
通常我们研究Java字节码可以使用javap -c *.class 命令将class文件输出到txt文档来结合以下指令分析代码。栈和局部变量操作将常量压入栈的指令aconst_null 将null对象引用压入栈iconst_m1 将int类型常量-1压入栈iconst_0 将int类型常量0压入栈iconst_1 将int类型常量1压入栈iconst_2 将...原创 2019-11-13 09:14:28 · 1494 阅读 · 1 评论 -
JVM类加载机制深入浅出分析—JVM系列(一)
1.一个类从加载到运行的整体流程这里先用下面一个Demo类的加载到运行过程进行分析public class Demo { public static final int count = 128; public static Test test = new Test(); public int compute(){ int x = 1; int y = 2; int z = (x + y) * 3; ret.原创 2020-10-25 21:04:23 · 20394 阅读 · 2 评论 -
JVM内存模型—JVM系列(二)
前言:我们都知道Java语言具有跨平台特性,正是由于JVM的存在,JVM相当于软件与硬件之间的中介,屏蔽了不同操作系统(Windows或Linux等等)底层指令集的区别,所以所深入了解JVM内存模型就显得很重要啦那我就用下面这段代码作为抛砖引玉吧public class Demo { public Car car= new Car(); // 上一篇文章提到过,一个方法对应一块栈帧内存 public int compute(){ int x = 1原创 2020-11-02 00:08:32 · 19856 阅读 · 0 评论