本文介绍: 堆内存中一个对象不再使用时,垃圾回收器却无法从内存中删除他们,导致内存泄露。java文件到最终运行, 需要经过编译和类加载这两个阶段。类加载的过程:把.class文件加载到jvm的内存中。编译的过程:把.java文件编译成.class文件。如果内存泄露的空间足够大,就会导致内存溢出。
3.JVM
3.1 对象实例、类信息、常量、静态变量分别在运行时数据区的哪个位置?
3.2 java类的加载流程
java文件到最终运行, 需要经过编译和类加载这两个阶段
编译的过程:把.java文件编译成.class文件
类加载的过程:把.class文件加载到jvm的内存中
- 加载
通过类的全限定名获取类的二进制数据, 这可以通过类加载器完成, 类加载器可以从文件系统、网络、ZIP文件等地方获取类文件的二进制数据
将获取的二进制数据转换为方法区(或元空间)的运行时数据结构, 这个数据结构存储了类的字段、方法、构造方法等信息,同时也包含了类的常量池,即字面量(如字符串、final常量)和符号引用等。 - 验证
确保被加载的类的正确性. 这个阶段主要包括文件格式验证、元数据验证、字节码验证等,以确保类文件的正确性和安全性。 - 准备
为类的静态变量分配内存并设置初始值, 这里的初始值通常是默认值,比如数值类型的默认值是0,引用类型的默认值是null - 解析
类、接口、字段和方法的符号引用解析为直接引用 - 初始化
类的初始化方法
3.3 java内存溢出什么时候会发生以及解决方法
一、内存溢出的原因
如果内存泄露的空间足够大,就会导致内存溢出
堆内存中一个对象不再使用时,垃圾回收器却无法从内存中删除他们,导致内存泄露。
二、内存泄露的影响
原文地址:https://blog.csdn.net/qq_24099547/article/details/134712266
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_15187.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。