JVM:运行时数据区之本地方法区
- 本地方法栈
指的是被native修饰的方法,即非Java代码。
下图中getClass()没有方法体,是由Java的底层的C/C++来实现的。
本地方法栈也是由线程独享的,没有线程安全问题。
- 方法区
保存的是类信息、常量、静态变量、JIT(即时)编译时代码。
类信息:类的元数据(metadata),也就是通过反射能拿到的信息,比如说访问权限、实现的接口、类要继承的类......我们之所以可以通过反射获取对象,就是因为类的元数据被加载到了方法区中。
方法区不是线程独享的,而是线程共享的(堆也是), Java线程安全问题由此而生。