JVM
文章平均质量分 91
爱吃烤面筋的鱼
拥有4年的智能制造领域的软件开发经验。。熟悉传统行业的数字化转型,使用最新的微服务技术为企业提供更多的效益。。主要使用 JAVA 相关技术
展开
-
JVM -- 运行时内存使用情况及监控工具
Java本身提供了多种丰富的方法和工具来帮助开发人员查看和分析GC及JVM内存的状况,同时开源界和商业界也有一些工具可用于查看、分析GC及JVM内存的状况。通过这些分析,可以排查程序中内存泄露的问题及调优程序的性能。下面介绍几种常用的免费工具,其中知名的有JProfiler 等。##查看JAVA进程// 查看当前机器上所有运行的java进程名称与pid(进程编号)jps -l // 显示指定的...转载 2018-05-04 11:53:36 · 320 阅读 · 0 评论 -
JVM - GC日志格式及分析
1. 与日志收集相关的JVM参数-Xms :初始堆大小-Xmx :最大堆大小-XX:NewSize=n :设置年轻代大小 -XX:NewRatio=n: 设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4 -XX:SurvivorRatio=n :年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,...转载 2018-08-08 10:11:48 · 1303 阅读 · 0 评论 -
JVM -- 垃圾回收器
垃圾回收器根据不同内存区域,有不同的垃圾回收器。新生代回收器主要有:Serial收集器、ParNew收集器、Parallel Scanvenge收集器。老年代收集器有:Serial Old收集器、Parallel Old收集器、CMS收集器。而G1收集器则是集新生代和老年代内存回收功能于一身的收集器。GC在 HotSpot VM 5.0里有四种:incremental (sometimes...转载 2018-08-07 16:33:03 · 101 阅读 · 0 评论 -
JVM -- GC(Minor GC, Major FC, Full GC)
【需要说明:元数据区的大小限定于本地内存的大小,Eden、Survivor、Old区都是JVM管理下的堆中分配的内存区域】GC是什么GC(GarbageCollection)是垃圾回收机制,在java中开发人员无法使用指针来自由的管理内存,GC是JVM对内存(实际上就是对象)进行管理的方式。GC使得Java开发人员摆脱了繁琐的内存管理工作,让程序的开发更有效率。GC的工作原理对于程...原创 2018-08-07 16:27:56 · 625 阅读 · 0 评论 -
JVM - 常用启动参数
ava启动参数共分为三类;其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容;其二是非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容;其三是非Stable参数(-XX),此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用;本文主要描述标准参数部分,剩下的两个部分将会陆续推出;标准参数列表如下:...转载 2018-08-07 14:32:41 · 521 阅读 · 0 评论 -
JVM - 垃圾回收(GC)算法
Java中常用的垃圾收集算法:(1).标记-清除算法:最基础的垃圾收集算法,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成之后统一回收掉所有被标记的对象。标记-清除算法的缺点有两个:首先,效率问题,标记和清除效率都不高。其次,标记清除之后会产生大量的不连续的内存碎片,空间碎片太多会导致当程序需要为较大对象分配内存时无法找到足够的连续内存而不得不提前触发另一...转载 2018-08-09 20:04:03 · 120 阅读 · 0 评论 -
JVM - 直接引用和符号引用
而解析阶段即是虚拟机将常量池内的符号引用替换为直接引用的过程。1.符号引用(Symbolic References):符号引用以一组符号来描述所引用的目标,符号可以是任何形式的字面量,只要使用时能够无歧义的定位到目标即可。例如,在Class文件中它以CONSTANT_Class_info、CONSTANT_Fieldref_info、CONSTANT_Methodref_info等类型的常量出...转载 2018-08-09 10:24:37 · 2361 阅读 · 0 评论 -
JVM -- JMM -- 运行时数据区
上一篇文章介绍了JVM的内存结构,这一章从更高的维度,来看一下JVM的内存模型方法区和堆是线程公有的; 栈和程序计数器是线程私有的。下面分别介绍一下各个区域的作用:程序计数器(Programming Counter,PC)程序计数器是一块较小的内存区域,用来指示当前线程所执行字节码的行号。由于Java虚拟机的多线程是通过线程轮流切换获取CPU执行时间的方式来实现的。在任何一个时刻,一个处理器只会执...原创 2018-05-04 18:03:33 · 280 阅读 · 0 评论 -
JVM -- JAVA内存模型(JMM)
JDK1.7及之前的JMM先看一张图,很清晰的说明了JAVA内存结构布局:JAVA内存结构主要分为三大块:堆内存、方法区和栈。堆内存是JVM中最大的一块内存,由年轻代和老年代组成。而年轻代又被分成三个部分:Eden空间、From Survivor空间、To Survivor空间。默认情况下按 8:1:1的比例来分配。方法区存储类信息、常量、静态变量等数据,是线程共享的区域...原创 2018-05-04 16:24:07 · 650 阅读 · 0 评论 -
JVM -- 运行原理及架构
JVM(Java Virtual Machine), 即JAVA虚拟机,是一种计算设备的规范,是一个虚构出来的计算机,通过在实际的计算机上仿真模拟计算机功能来实现的。JVM是实现JAVA语言平台无关性的关键。一般高级语言如果要在不同的平台上运行,就必须编译成不同平台的目标代码。但JAVA语言不一样,它是利用JVM来屏蔽平台相关性,使得JAVA语言只需编译成JAVA字节码(JVM的目标代码),就可以...原创 2018-05-04 15:42:58 · 124 阅读 · 0 评论 -
JVM - 类加载机制详解(初始化时机/双亲委派)
概述:虚拟机的类加载机制主要是指:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型的一整套机制类的加载流程:其主要的加载流程(生命周期)如图:在这个生命周期的流程图中,加载,验证,准备,初始化,卸载这五个阶段的顺序是确定的,也就是说要加载类时需要依次进行这个五个阶段,但是类的解析阶段则不一定,有可能在...转载 2018-08-08 22:50:27 · 122 阅读 · 0 评论