方法区

如图:
JVM方法区详解
在一个jvm实例的内部,类型信息被存储在一个称为方法区的内存逻辑区中。类型信息是由类加载器在类加载时从类文件中提取出来的。类(静态)变量也存储在方法区中。

jvm实现的设计者决定了类型信息的内部表现形式。如,多字节变量在类文件是以big-endian存储的,但在加载到方法区后,其存放形式由jvm根据不同的平台来具体定义。

jvm在运行应用时要大量使用存储在方法区中的类型信息。在类型信息的表示上,设计者除了要尽可能提高应用的运行效率外,还要考虑空间问题。根据不同的需求,jvm的实现者可以在时间和空间上追求一种平衡。

因为方法区是被所有线程共享的,所以必须考虑数据的线程安全。假如两当有多个线程都用到一个类的时候,而这个类还未被加载,则应该只有一个线程去加载类,让其他线程等待;

方法区的大小不必是固定的,jvm可以根据应用的需要动态调整。jvm也可以允许用户和程序指定方法区的初始大小,最小和最大限制.

方法区同样存在垃圾收集,因为通过用户定义的类加载器可以动态扩展Java程序,这样可能会导致一些类,不再被使用,变为垃圾。这时候需要进行垃圾清理。

相关文章:

  • 2021-04-13
  • 2021-12-16
  • 2021-06-23
  • 2021-06-13
  • 2021-05-28
  • 2021-11-06
猜你喜欢
  • 2022-12-23
  • 2021-06-11
  • 2021-09-15
  • 2021-11-15
  • 2021-09-28
  • 2021-08-13
  • 2022-01-22
相关资源
相似解决方案