java native newInstance0方法在jvm底层实现原理

使用构造器反射对象实例

java 复制代码
private static native Object newInstance0(Constructor<?> c, Object[] args)
        throws InstantiationException,
               IllegalArgumentException,
               InvocationTargetException;

newInstance0底层实现逻辑

jvm源码

java 复制代码
JNIEXPORT jobject JNICALL Java_jdk_internal_reflect_NativeConstructorAccessorImpl_newInstance0
(JNIEnv *env, jclass unused, jobject c, jobjectArray args)
{
    return JVM_NewInstanceFromConstructor(env, c, args);
}

jvm.cpp实现这个方法JVM_NewInstanceFromConstructor

java 复制代码
JVM_ENTRY(jobject, JVM_NewInstanceFromConstructor(JNIEnv *env, jobject c, jobjectArray args0))
  JVMWrapper("JVM_NewInstanceFromConstructor");
  oop constructor_mirror = JNIHandles::resolve(c);
  objArrayHandle args(THREAD, objArrayOop(JNIHandles::resolve(args0)));
  oop result = Reflection::invoke_constructor(constructor_mirror, args, CHECK_NULL);
  jobject res = JNIHandles::make_local(env, result);
  if (JvmtiExport::should_post_vm_object_alloc()) {
    JvmtiExport::post_vm_object_alloc(JavaThread::current(), result);
  }
  return res;
JVM_END
相关推荐
rGzywSmDg1 分钟前
如何在Dev-C++中选择TDM-GCC编译器
linux·jvm·c++
周杰伦fans2 分钟前
C# AutoCAD 二次开发极简入门:从环境搭建到高效实战
开发语言·c#
吴声子夜歌6 分钟前
状态机——枚举实现简单状态机
java·枚举·状态机
hhb_6188 分钟前
Swift技术难点梳理与实战案例解析
开发语言·ios·swift
Rick19938 分钟前
【无标题】
java
yoyo_zzm9 分钟前
四大编程技术对比:PHP、Java、Python与HTML
java·python·php
行走的陀螺仪14 分钟前
[特殊字符] JavaScript 设计模式完全指南:从入门到精通(含20种模式)
开发语言·javascript·设计模式
信竞星球_少儿编程题库16 分钟前
2026年全国信息素养大赛算法应用主题赛 丝路新城 Python 模拟卷(三)
开发语言·python·算法
海兰16 分钟前
【第54篇】Graph + Langfuse 可观测性实战
java·人工智能·spring boot·spring ai