JVM
吴帝永
这个作者很懒,什么都没留下…
展开
-
【JVM诊断工具】JDK自带性能故障分析工具
JConsole。原创 2022-08-12 10:56:59 · 312 阅读 · 0 评论 -
【JVM诊断工具】Arthas
快速入门 | arthas原创 2022-07-27 17:24:16 · 145 阅读 · 0 评论 -
JVM内存区域
https://blog.csdn.net/shiyong1949/article/details/52585256https://blog.csdn.net/qq_36859415/article/details/53407439转载 2018-06-20 18:15:35 · 130 阅读 · 0 评论 -
内存管理
java虚拟机运行时的数据区 程序计数器: 占内存空间很小,每条线程有一个独立的程序计数器(软件上的计数器,不是指硬件的计数器),用于记录执行到的位置,这样线程切换后可以恢复到正确的执行位置。 如果正在执行的是Native方法,则该计数器的值为0。 虚拟机栈: 虚拟机栈也是线程私有的,生命周期与线程相同,每个方法被执行时都会创建一个栈帧用于存储局部变量、操作数栈、动态原创 2015-08-12 14:03:32 · 310 阅读 · 0 评论 -
Java内存模型
内存模型的抽象 在java中,所有实例域、静态域和数组元素存储在堆内存中,堆内存在线程之间共享(本文使用“共享变量”这个术语代指实例域,静态域和数组元素)。局部变量(Local variables),方法定义参数(java语言规范称之为formal method parameters)和异常处理器参数(exception handler parameters)不会在线程之间共享,它们不会原创 2015-08-12 14:06:36 · 359 阅读 · 0 评论 -
垃圾回收
Java的垃圾回收机制是Java虚拟机(JVM)提供的能力,用于在空闲时间以不定时的方式动态回收无任何引用的对象占据的内存空间。 需要注意的是:垃圾回收回收的是无任何引用的对象占据的内存空间而不是对象本身。垃圾回收的是堆中的内存,而不是栈中的内存!! System.gc() 或 Runtime.getRuntime().gc() 上面的方法调用时用于显式通知JVM可以进行一次垃圾回收原创 2015-08-12 14:05:21 · 341 阅读 · 0 评论 -
类加载器
JVM预定义的三种类型类加载器: 启动(Bootstrap)类加载器: 是用native实现的类装入器,它负责将 /lib下面的类库加载到内存中(比如rt.jar)。由于引导类加载器涉及到虚拟机本地实现细节,开发者无法直接获取到启动类加载器的引用,所以不允许直接通过引用进行操作。 标准扩展(Extension)类加载器: 是由 Sun 的 ExtClassLoader(sun.misc原创 2015-08-08 13:16:34 · 342 阅读 · 0 评论 -
强、弱、软、虚引用
在Java中,虽然不需要程序员手动去管理对象的生命周期,但是如果希望某些对象具备一定的生命周期的话(比如内存不足时JVM就会自动回收某些对象从而避免OutOfMemory的错误)就需要用到软引用和弱引用了。 从Java SE2开始,就提供了四种类型的引用:强引用、软引用、弱引用和虚引用。Java中提供这四种引用类型主要有两个目的:第一是可以让程序员通过代码的方式决定某些对象的生命周期;第二是有利原创 2015-08-08 13:19:11 · 438 阅读 · 0 评论 -
虚拟机加载机制
java中的类并不是在运行或编译时就被初始化的,而是在运行的过程中需要的时候才被初始化,一个类的生命周期包括下面7个阶段: 加载->验证->准备->解析->初始化->使用->卸载 其中,加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,“解析”可能在初始化之前或之后进行,“使用”应该也能在初始化之前或之后进行。 类何时被初始化 一个类当且仅当在下面4种情况之一发生时才原创 2015-08-08 13:18:50 · 336 阅读 · 0 评论 -
方法分派
可以从两方面划分: 静态分派及动态分派 单分派及多分派 静态分派及动态分派 静态分派: 先来看一段代码: public class StaticDispatch { public void sayHello(Human guy) { System.out.println("hello, guy!"); }原创 2015-08-08 13:17:19 · 549 阅读 · 0 评论