jvm-方法区
来源:互联网 发布:淘宝手机助手苹果版 编辑:程序博客网 时间:2024/05/22 09:42
jvm方法区(Method Area)
当jvm使用类装载器装在某个类时,它首先要定位到对应的class文件,然后读入这个class文件,最后提取该文件的内容信息,并将这些信息存储到方法去,最后返回一个class实例。
方法区是系统分配的一个内存逻辑区域,是一块所有线程共享的内存区域,用来存储类型信息(类型信息可以理解为类的描述信息(类的全限定名,访问修饰符,字段,方法等)),方法区的大小决定了系统可以包含多少个类,如果系统类太多,方法区内存不够会导致方法区溢出,虚拟机同样会抛出内存溢出信息。方法去特点:
1.方法区是线程安全的,由于所有的线程都共享方法区,所以方法区里的数据访问必须被设计成线程安全的。例如,假如同时有两个线程都企图访问方法区中的同一个类,而这个类还没有被装入jvm,那么只允许一个线程去装在它,而其他线程必须等待。
2.方法去的大小不必是固定的,jvm可根据应用需要动态调整,同时,方法区也不一定是连续的,方法区可以在一个堆(甚至是jvm自己的堆)中自由分配。
3.方法区也可被垃圾收集,当某个类不在被使用时,jvm将卸载这个类,进行垃圾收集。
方法区存放内容:
1.类的全限定名(类的全路径名)。
2.类的直接超类的权全限定名(如果这个类是Object,则它没有超类)。
3.类的类型(类或接口)。
4.类的访问修饰符,public,abstract,final等。
5.类的直接接口全限定名的有序列表。
6.常量池(字段,方法信息,静态变量,类型引用(class))等
类变量:
类变量为静态变量,在方法去中有个静态去,静态去专门用来存放静态变量以及静态块。
方法区内存大小设置:
jdk1.6,jdk1.7 永久区
-XX:PermSize=10M 初始化方法区大小为10M。
-XX:MaxPermSize 方法区最大内存为10M。
-XX:PrintGCDetails 打印日志详情。
jdk1.8 元数据区
-XX:MetaspaceSize=10M
-XX:MaxMetaspaceSize=10M
元数据区发生溢出,虚拟机一样抛出异常,如下:
java.lang.OutOfMemoryError Metaspace
- JVM中方法区
- JVM 方法区
- JVM中方法区
- JVM2:Jvm方法区
- jvm方法区
- jvm方法区
- JVM体系结构--方法区
- JVM回收方法区
- JVM解读-方法区
- JVM方法区理解
- jvm-方法区
- jvm体系结构-方法区详解
- jvm 堆、栈、方法区
- JVM 方法区回收小结
- jvm体系结构-方法区详解
- JVM:堆、栈、方法区
- jvm方法区的回收
- JVM 堆,栈,方法区
- MVP之Android官方MVP架构学习—View层和Presenter层
- Java Ant build.xml详解
- B-, B+,B* 树
- swagger-editor 本地部署到
- ES6 严格模式
- jvm-方法区
- 专业的PDF组件Spire.PDF for .NET V3.9.407发布 | 支持将PDF转换为Html流
- Android源码里packages里面的结构~~~
- ThreadLocal出现OOM内存溢出的场景和原理分析
- android dialog的style简单设置
- maven+svn部署项目环境错误太多怎么办?
- 视频目标检测跟踪--Detect to Track and Track to Detect
- 快速掌握 MongoDB 数据库
- 机器人 里程计 下的 粒子滤波 相关介绍~~,持续更新(gmapping)