热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

深入解析JVM运行时数据区域及指令集

本文详细探讨了JVM运行时数据区域的结构及其指令集,深入分析了各个内存区域的功能与作用,并对常用指令进行了全面解析,为开发者提供了深入理解JVM工作原理的参考。通过具体示例,本文还展示了如何利用这些知识优化代码性能和调试问题。

JVM 运行时数据区与指令



  • PC:program counter:程序计数器

  • Method Area:方法区:逻辑概念,1.7之前指的PermSapce(永久区)1.8之后的MetaSapce(原数据区)

  • Native Method astacks:由c++等编辑的本地方法,一般没法进行调优

  • Heap:堆内存:调优重点

  • Run-time constant pool :运行时常量池。

  • Direct Memory:直接内存区,NIO提高效率实现zero copy的区域,让jvm可以直接访问内核空间的内存(OS管理的内存)

如下图:每个线程都有PC VMS(栈) NMS(方法区) 



每个方法都有自己的栈帧

  • Local Variables:本地变量表:变量名称

  • Orerand Stacks:操作数栈:堆内存的引用

  • Dynamic Linking 动态链接:其他对象引用


    如何证明1.7 字符串常量位于Perm,1.8位于堆内存?

    回答:结合GC,一直创建字符串常量,观察堆和matespace




    推荐阅读
    author-avatar
    手机用户2602887045_745
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有