Java虚拟机
文章平均质量分 92
Xurtle
俺的私人微博:http://weibo.com/hacker4long
展开
-
深入探讨Java 类加载器
什么是类加载器?类加载器(class loader)用来加载 Java 类到 Java 虚拟机中。一般来说,Java 虚拟机使用 Java 类的方式如下:Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件)。类加载器负责读取 Java 字节代码,并转换成 java.lang.Class类的一个实例。每个这样的实例用来表示一个原创 2015-07-26 16:59:54 · 1237 阅读 · 0 评论 -
Java虚拟机垃圾收集器
垃圾收集器用到的垃圾收集算法标记-清除(Mark-Sweep)算法:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。它主要有两个缺点:一个是效率问题,标记和清楚过程的效率都不高;另外一个是空间问题,标记清楚后会产生大量不连续的内存碎片,空间碎片太多可能会导致,当程序在以后的运行过程中需要分配较大对象时无法找到足够连续的内存空间而不得不提前出发另一次垃圾收集动作。执行过程如下图所示原创 2015-07-27 21:55:22 · 785 阅读 · 0 评论 -
Java内存区域与模拟内存区域异常
我把Java的内存区域画了一张思维导图,以及各区域的主要功能。模拟Java堆溢出Java堆用于存储对象实例,只要不断地创建对象并且保证GC ROOTS到对象之间有可达路径避免被回收机制清除,就可以模拟出Java堆溢出。package hxl.insist.jvm;import java.util.ArrayList;import java.util.List;/*原创 2015-07-24 18:39:18 · 896 阅读 · 0 评论 -
详解Java虚拟机类加载
概述在Java语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的。虚拟机把描述类的数据从Class文件或其它地方加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载过程。类加载的时机加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,类的加载过程必须按照这种顺序按部就班地开始,而解析阶段则不一定:它在某些情况下可以在初始化阶原创 2015-07-25 16:53:17 · 877 阅读 · 0 评论 -
一次毕生难忘的 Java 内存泄漏排查经历
这里写自定义目录标题在一个凄凉的午夜一定是网络的问题一定是 GC 的问题一定是内存泄漏真有这么糟糕吗?还是不行那现在是怎么回事?修复由修复引起的问题再次优化 GC结论人人都会犯错,但一些错误是如此的荒谬,我想不通怎么会有人犯这种错误。更没想到的是,这种事竟发生在了我们身上。当然,这种东西只有事后才能发现真相。接下来,我将讲述一系列最近在我们一个应用上犯过的这种错误。最有意思的是,一开始的迹象揭示...转载 2019-08-23 22:18:28 · 682 阅读 · 1 评论