为了更好的与大家互相学习,我还是把整个工程贴出来.
我没有写TestCase.直接在ClassInfo类的写了个main函数,它的构造函数完成了为一个指定的类(是这个工程用到的类)构造它的Class File Format.(了解的朋友可以参照JVM规范看看结果或代码中是不是隐含着什么错误).
整个工程没有太多注释,因为这个原本就是我拿来做个试验,换句话说我可以理解就OK了(但在为组织Class File Info的函数中如果没有注释看下函数大概可以理解我要做什么).本来我是参考ASM的方法实现过一个但感觉不自然所以有写了一个,代码写的不怎样,就让大家笑话去吧.
其次就是打印其中的信息,这是我随便写的,其中分printBeforeHeader(输出常量池之前的信息,包括常量池),printAfterHeader(输出常量池之后的信息),由于这个太长,作为测试要么去掉只打印printBeforeHeader要么printAfterHeader当然它们合在一起就是整个Class File Format.(其中一些地方还是和ASM一样,拿来主义)
这个工程还没有详细测试过,问题肯定是存在的,发现的朋友不妨告诉我一声,好完善它.
另外一点:有兴趣的朋友可以在此基础上来个反向工程,把读出的信息再写回去,这不是很简单的工作,至少对于我来说.
分享到:
相关推荐
### 美团JVM问题定位和排错 #### 背景 在现代软件开发中,Java虚拟机(JVM)作为运行Java程序的基础平台,对于任何使用Java语言进行开发的服务都至关重要。然而,在实际运行过程中,由于复杂的运行环境和技术栈的...
总的来说,HSDB是HotSpot VM的一个强大工具,它提供了丰富的功能来探索和理解JVM的运行时数据,包括内存布局、对象状态以及垃圾收集行为等。熟练掌握HSDB的使用,将极大地提升开发者对Java应用性能调优的能力。
在"lib_j2re_test.rar"这个压缩包中,我们可能找到了与Java运行时环境(JRE)相关的库文件,这些文件对于理解JVM的工作机制以及Java应用程序的运行过程至关重要。 1. **Java运行时环境(JRE)**: JRE是Java开发...
在Java世界中,JVM(Java虚拟机)是运行所有Java应用程序的基础,它为每个应用程序提供了一个独立的运行环境。Spring Boot是一个简化Spring应用开发的框架,它通过提供默认配置和starter项目,使得构建微服务变得...
JVM 内存溢出问题解析 JVM 内存溢出是指程序运行所需的内存大于虚拟机能提供的最大内存的情况。这种情况可能是由于数据量过大、死循环、静态变量和静态方法过多、递归、无法确定是否被引用的对象等原因引起的。同时...
Jvm On Go 使用golang基于 构建的简易JVM,仅供学习使用。 Roadmap 类加载 字节码解析 类解析及初始化 字节码解释器 单线程 部分Native方法(使用golang实现) invokedynamic Lambda Getting Started 1. 环境准备 本地...
JVM性能调优和常见问题!JVM结构和常见错误解决
那么,如何解决这个问题呢? 解决方法是杀掉占用端口 8080 的进程。下面是步骤: 首先,打开黑窗口,输入命令“netstat -ano”,这将显示当前系统中所有的网络连接和进程信息。然后,找到占用端口 8080 的进程,...
标题中提到了JVM原理、JVM调优、JVM内存模型和JAVA并发,这些都是Java虚拟机(JVM)相关的核心概念。JVM是运行Java字节码的虚拟计算机,为Java提供了一个跨平台的环境,确保Java程序可以在不同的操作系统上运行而...
Java虚拟机(JVM)是Java程序运行的核心,它负责解释和执行字节码,为Java应用程序提供了一个跨平台的运行环境。JDK(Java Development Kit)包含了开发和运行Java程序所需的所有工具,包括JVM。当我们谈论"jdk,jvm...
新生代(Young Generation)包括Eden区和两个Survivor区(From和To),采用复制算法进行垃圾回收。老年代(Tenured Generation)使用标记-整理或标记-压缩算法。垃圾回收器有Serial、Parallel、CMS和G1等,各有优...
标题《JVM调优和故障排除手册》预示着文档将专注于Java虚拟机(JVM)的性能调优以及如何诊断和解决在JVM环境中遇到的问题。JVM是运行Java程序的核心,负责提供内存管理、垃圾回收、多线程处理以及本地方法调用等服务...
JamVM是一个小型、快速的JVM,设计用于嵌入式系统和那些资源有限的环境。它遵循Java虚拟机规范,能够执行标准的Java字节码。这个版本号表明这是该项目在2004年的更新,可能包含当时的最新特性和修复。 以下是关于...
深入学习JVM对于优化Java应用程序性能、理解和解决内存问题至关重要。本教程将涵盖JVM内存模型、内存分配以及优化策略。 一、JVM内存模型 1. 堆内存:堆是所有线程共享的一块内存区域,主要用于存储对象实例。Java...
SAP JVM 8.1 64位是一个专为SAP系统设计的Java虚拟机,它基于Oracle的Java Development Kit (JDK) 进行优化,以满足SAP应用程序的特定需求。SAP JVM旨在提高性能、可靠性和安全性,同时确保与SAP产品的无缝集成。...
JVM面试资料。 JVM结构:类加载器,执行引擎,本地方法接口,本地内存结构; 四大垃圾回收算法:复制算法、标记-清除算法、标记-整理算法、分代收集算法 七大垃圾回收器:Serial、Serial Old、ParNew、CMS、Parallel...
Java虚拟机(JVM)是Java程序运行的基础,它是一个抽象的计算机系统,负责执行Java字节码。本文将深入探讨JVM的启动过程及其基本原理。 首先,我们需要理解JVM的基本概念。JVM是Java Virtual Machine的缩写,它是...
JVM 的指令集采用了固定长度的格式,每条指令都是由一个操作码(Opcode)和零个或多个操作数组成。这种设计使得指令集既简单又易于扩展。 例如,“iload”表示加载整数到操作数栈,“anewarray”用于创建数组对象,...
JVM 输出 GC 日志导致 JVM 卡住是一个常见的问题,尤其是在高并发和高性能应用中。这个问题的根源在于 JVM 的垃圾回收机制(Garbage Collection,GC),它会在 JVM 运行时周期性地进行垃圾回收,以释放内存空间。...