news 2026/9/3 5:25:04

hotspot中的Java类对象如何保存虚函数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
hotspot中的Java类对象如何保存虚函数
hotspot中的Java类对象如何保存虚函数
  • 定义

在Java中,几乎所有可被继承的函数被称为虚函数。

In HotSpot, a virtual method is essentially: Any non-static, non-private, non-final instance method whose invocation target is determined at runtime based on the actual class of the object.

还是以Dog类为例

public class Dog implements Animal { ... public String speak(){ return "Woof!"; } ... }

这里的speak()函数就是Java的虚函数,编译后的字节码文件也使用invokevirual字节码来执行该函数

27: invokevirtual #53 // Method speak:()Ljava/lang/String;

在《Java虚拟机规范》上对invokevirtual的解释如下

Invoke instance method; dispatch based on class
  • Klass中虚函数字段

在hotspot中使用Klass的虚函数使用vtable()来描述

class Klass : public Metadata { ... protected: // vtable length int _vtable_len; // vtables klassVtable vtable() const;//返回KlassVtable对象 ... }

在hotspot解析字节码的函数部分中会筛选出虚函数部分

#0 klassVtable::compute_vtable_size_and_num_mirandas ( #1 0x00007ffff61b1927 in ClassFileParser::post_process_parsed_stream ( #2 0x00007ffff61afcf0 in ClassFileParser::ClassFileParser (

void klassVtable::compute_vtable_size_and_num_mirandas函数中根据函数的访问权限找出虚函数

void klassVtable::compute_vtable_size_and_num_mirandas( ... if (needs_new_vtable_entry(method, super, classloader, classname, class_flags, major_version)) {//判断的昂前函数是否为虚函数 ... vtable_length += vtableEntry::size(); // we need a new entry } ... }

我们现在针对java/lang/Object进行gdb调试,我们来看看needs_new_vtable_entry函数中可以引发vtablemethod

Thread 2 "java" hit Breakpoint 4, klassVtable::compute_vtable_size_and_num_mirandas (vtable_length_ret=0x7ffff59fdf28, num_new_mirandas=0x7ffff59fdf30, all_mirandas=0x7ffff0034af0, super=0x0, methods=0x7fffe8800460, class_flags=..., major_version=61, classloader=..., classname=0x7ffff40210f0, local_interfaces=0x7fffe8800058) at /home/jx/src
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 23:57:01

2. 训练 vs 推理:真正烧钱的是哪一步

作者:HOS(安全风信子) 日期:2026-01-17 来源平台:GitHub 摘要: 2026年,AI行业的成本结构已经发生根本性转变。本文通过云厂商真实数据揭示,推理的累计成本已超过训练10倍以上,成为真正烧钱的环节…

作者头像 李华
网站建设 2026/9/2 19:51:49

5. vLLM 出现前的推理地狱

作者:HOS(安全风信子) 日期:2026-01-17 来源平台:GitHub 摘要: 2023年vLLM出现之前,大模型推理面临着显存碎片化、低效调度和高延迟等诸多挑战,被称为"推理地狱"。本文通过回顾pre-vLLM时代的痛点…

作者头像 李华
网站建设 2026/9/2 21:30:55

7. 为什么云厂商集体选择 vLLM

作者:HOS(安全风信子) 日期:2026-01-17 来源平台:GitHub 摘要: 2026年,AWS、阿里云、字节跳动等全球顶级云厂商纷纷选择vLLM作为其大模型推理的核心框架。本文深入分析了云厂商集体选择vLLM的原因,包括高吞…

作者头像 李华
网站建设 2026/9/2 21:40:30

计算机毕设怎么写?从选题到答辩的超详细通关攻略

💫 关于文星毕设 深耕计算机毕设领域5年,全网累计帮助10000学生顺利毕业!CSDN认证全栈技术博主、掘金优质创作者,阿里云开发者社区认证专家。 在校期间曾协助导师完成3届毕业生毕设课题审核、论文格式规范指导、项目代码校验工作&…

作者头像 李华
网站建设 2026/9/2 21:40:23

YOLO26 接入实时视频 - GPU 加速2

经过优化后,稳定在60ms,不卡顿import cv2 from ultralytics import solutions import torch # ✅ 必须在文件顶部 新增导入torch!!! import gc # ✅ 必须在文件顶部 新增导入gc!!&#xff01…

作者头像 李华
网站建设 2026/9/2 21:39:42

深度测评8个AI论文平台,继续教育学生轻松搞定毕业论文!

深度测评8个AI论文平台,继续教育学生轻松搞定毕业论文! AI 工具助力论文写作,让学术之路更轻松 在当今快节奏的学习环境中,继续教育学生面临着越来越大的学术压力,尤其是毕业论文的撰写。传统的写作方式不仅耗时费力&a…

作者头像 李华