Java/Android阿里面试JVM部分理解

简介: 最近选择性的看了深入理解java虚拟机这本书,挑了几章对于深入android开发有帮助的章节,大厂面试android或者java的时候也可能会问到,所以大家有爱自取。

最近选择性的看了深入理解java虚拟机这本书,挑了几章对于深入android开发有帮助的章节,大厂面试android或者java的时候也可能会问到,所以大家有爱自取。

1.java内存管理

很多人都只知道java的内存分为堆和栈,但是其实里面有更多东西,要成为一个高级java/android 开发者对于虚拟机简单了解是必不可少的,所以上一张图,让大家方面记忆。

java内存管理

简书上传图片会被压缩所以大家用这张图片吧:
http://img.blog.csdn.net/20170423141113568?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYTEwMTg5OTg2MzI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

2.class文件的结构

查看java字节码也是高级java开发者所不可缺少的技能,所以我总结了一张class文件的结构图,大家可以看看。

class文件组成

简书上传图片会被压缩所以大家用这张图片吧:
http://img.blog.csdn.net/20170306172800420?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYTEwMTg5OTg2MzI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

3.java虚拟机的方法调用

方法的调用并不等于方法的执行,java的方法调用不像c++一样在编译期就知道了方法的具体内存地址,当一个方法被调用了,只是class的常量池中的符号引用被调用,而符号引用会在类加载期间或者运行期间指向真正的方法的内存地址,这就给java带来了强大的动态扩展能力。

  • 1.解析:所有方法调用都是Class文件中的一个符号引用,在Class加载的阶段,有一些符号引用会转化成直接引用(内存中具体方法的地址),这个解析成功的前提就是在运行过程中这个方法是不能被改变的。这类运行期不变的方法调用被称为解析。
    • 1.私有方法和静态方法就是这类方法,前者不可被外部调用,后者与类直接相关。所以会在类加载阶段被解析。
    • 2.invokestatic和invokespecial这两条字节码指令就与上面的俩者对应,这些方法统称为非虚方法。此外还有一种被final的方法,因为这种方法不能被覆盖所以虽然其是由invokevirtual指令来调用,但是其依然是非虚方法。
  • 2.分派: [http://blog.csdn.net/ns_code/article/details/17965867](http://blog.csdn.net/ns_code/article/details/17965867 分派")
相关文章
|
5月前
|
存储 关系型数据库 MySQL
阿里面试:MySQL 一个表最多 加几个索引? 6个?64个?还是多少?
阿里面试:MySQL 一个表最多 加几个索引? 6个?64个?还是多少?
阿里面试:MySQL 一个表最多 加几个索引? 6个?64个?还是多少?
|
15天前
|
人工智能 Java 开发者
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
JManus是阿里开源的Java版OpenManus,基于Spring AI Alibaba框架,助力Java开发者便捷应用AI技术。支持多Agent框架、网页配置、MCP协议及PLAN-ACT模式,可集成多模型,适配阿里云百炼平台与本地ollama。提供Docker与源码部署方式,具备无限上下文处理能力,适用于复杂AI场景。当前仍在完善模型配置等功能,欢迎参与开源共建。
453 4
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
|
4月前
|
监控 Java 数据安全/隐私保护
阿里面试:SpringBoot启动时, 如何执行扩展代码?你们项目 SpringBoot 进行过 哪些 扩展?
阿里面试:SpringBoot启动时, 如何执行扩展代码?你们项目 SpringBoot 进行过 哪些 扩展?
|
3月前
|
负载均衡 架构师 Cloud Native
阿里面试:服务与发现 ,该选 CP 还是 AP?为什么?
阿里面试:服务与发现 ,该选 CP 还是 AP?为什么?
阿里面试:服务与发现 ,该选  CP 还是 AP?为什么?
|
2月前
|
安全 Oracle Java
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
196 0
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
|
3月前
|
存储 运维 Kubernetes
Java启动参数JVM_OPTS="-Xms512m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError"
本文介绍了Java虚拟机(JVM)常用启动参数配置,包括设置初始堆内存(-Xms512m)、最大堆内存(-Xmx1024m)及内存溢出时生成堆转储文件(-XX:+HeapDumpOnOutOfMemoryError),用于性能调优与故障排查。
321 0
|
5月前
|
存储 监控 算法
Java程序员必学:JVM架构完全解读
Java 虚拟机(JVM)是 Java 编程的核心,深入理解其架构对开发者意义重大。本文详细解读 JVM 架构,涵盖类加载器子系统、运行时数据区等核心组件,剖析类加载机制,包括加载阶段、双亲委派模型等内容。阐述内存管理原理,介绍垃圾回收算法与常见回收器,并结合案例讲解调优策略。还分享 JVM 性能瓶颈识别与调优方法,分析 Java 语言特性对性能的影响,给出数据结构选择、I/O 操作及并发同步处理的优化技巧,同时探讨 JVM 安全模型与错误处理机制,助力开发者提升编程能力与程序性能。
Java程序员必学:JVM架构完全解读
|
4月前
|
SQL Java 数据库连接
阿里腾讯互联网公司校招 Java 面试题总结及答案解析
本文总结了阿里巴巴和腾讯等互联网大厂的Java校招面试题及答案,涵盖Java基础、多线程、集合框架、数据库、Spring与MyBatis框架等内容。从数据类型、面向对象特性到异常处理,从线程安全到SQL优化,再到IOC原理与MyBatis结果封装,全面梳理常见考点。通过详细解析,帮助求职者系统掌握Java核心知识,为校招做好充分准备。资源链接:[点击下载](https://pan.quark.cn/s/14fcf913bae6)。
106 2

热门文章

最新文章