首先我们来说说java虚拟机的构成吧:
他是由程序计数器,堆,java虚拟机栈,本地方法栈,方法区这几块构成的,
- 堆是用来存放对象和数组的,这里我们就可以设计一个无限创造对象来模拟堆溢出.
|
|
- 栈是用来存放基本数据类型,对象引用,方法等等这些东西的,这里我们就能用无限递归来模拟栈溢出
|
|
- 方法区用来存放每个class的结构,比如说运行时常量池、域、方法数据、方法体、构造函数、包括类中的专用方法、实例初始化、接口初始化。cglib可以直接操作字节码,也可以动态产生Class,下面通过cglib来演示。
|
|