码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 关于java中方法区和常量池


    方法区

    方法区位置

    在jdk1.8以前,方法区的位置在堆内存中的一部分叫做永久代,1.8后将堆中方法区移除改用本地内存中的元空间

    jdk1.6

    方法区在堆中,内部结构有运行时常量池,类信息,类加载信息

    image-20220907200600585
    jdk1.8之后

    此时方法区已经不占用jvm内存而是直接占用本地内存,此时运行时常量池的位置移动到了堆中

    image-20220907200803536
    元空间溢出

    由于元空间是存放在本地内存中大小几乎可以看做是物理内存的大小,所以想要看到元空间溢出需要通过idea在编译设置设置元空间大小

     -XX:MaxMetaspaceSize=8m
    
    • 1

    image-20220907202343633

    在vm区域粘贴

    image-20220907202518938

    如果元空间内存溢出的话报错为:

    image-20220907202707459

    永久代溢出

    设置永久代大小

     -XX:MaxPermSize=8m
    
    • 1

    jdk1.6中永久代溢出报错为:

    image-20220907203253835

    查看常量池

    .java文件通过第一次编译为字节码文件后,其中包含了类基本信息,常量池,类方法自定义,虚拟机指令

    进入到class文件目录下并通过javap -v查看字节码反编译后的语句

    image-20220907212244096

    可以看到字节码中有关于main方法里面的执行指令和关于引用的常量池中指令的地址

    image-20220907212652692

    我们找到#2对应的常量池地址,发现其类型为Fieldref,说明其引用了其他的变量,后面的地址说明引用了#21,#22的地址(在常量池中应该是直接拼接出结果)

    image-20220907212757776

    在#21,#22又引用了#28,#29,#30的地址,类型为UTF8说明已经是最底层不需要再向下调用

    image-20220907213033778
    运行时常量池

    常量池是 *.class 文件中的,当该类被加载,它的常量池信息就会放入运行时常量池,并把里面的符号地址变为真实地址

  • 相关阅读:
    Redis的五大数据类型使用的方法详细介绍
    MSDP概述
    VoLTE端到端业务详解 | 应用实例一
    国家开放大学 模拟试题 训练
    ※基本数据类型的包装类、String类、String增强类StringBuilder和StringBuffer、BigDecimal类、Math类
    function declared implicitly
    nn.Linear & Tensor.masked_fill
    分享76个PHP源码总有一个适合你
    【无标题】简析天津某产业园能耗监测系统设计与应用
    基于MATLAB的风力光伏发电模型模拟以及遗传算法求解混合发电系统最优配置
  • 原文地址:https://blog.csdn.net/perturb/article/details/126764248
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号