当前位置: 首页 > article >正文

修改openjdk17 java/lang/String.java 类源码,增加一个native本地方法打印固定字符串功能

java/lang/String.java 新增加native方法

public native void printStringTable();

##图片

##/home/yym/openjdk17/jdk17-master/src/hotspot/share/include/jvm.h文件增加方法

//yym-gaizao
JNIEXPORT void JNICALL
JVM_String_printStringTable(JNIEnv *env, jstring str);

##src/hotspot/share/prims/jvm.cpp文件增加方法

//yym-gaizao
JVM_ENTRY(void, JVM_String_printStringTable(JNIEnv *env, jstring str))
  std::cout << "@@@@yym%%%%method address " << "" << "----begin" << std::endl;
  
JVM_END

##/home/yym/openjdk17/jdk17-master/build/linux-x86_64-server-slowdebug/support/headers/java.base/java_lang_String.h增加方法

//yym-gaizao
/*
 * Class:     java_lang_String
 * Method:    printStringTable
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_java_lang_String_printStringTable
  (JNIEnv *, jobject);

##src/java.base/share/native/libjava/String.c增加方法

//yym-gaizao
JNIEXPORT void JNICALL
Java_java_lang_String_printStringTable(JNIEnv *env, jobject this)
{
    JVM_String_printStringTable(env, this);
}

##/home/yym/openjdk17/jdk17-master/make/data/hotspot-symbols/symbols-unix符号表增加JVM_String_printStringTable方法符号

# yym-gaizao
JVM_String_printStringTable

##编译openjdk17源码

yym@yym:~/javaTest$ cd /home/yym/openjdk17/jdk17-master/
yym@yym:~/openjdk17/jdk17-master$ make CONF=linux-x86_64-server-slowdebug

##编写编译StringTableMain.java类并运行

yym@yym:~/javaTest$ /home/yym/openjdk17/jdk17-master/build/linux-x86_64-server-slowdebug/jdk/bin/javac StringTableMain.java
yym@yym:~/javaTest$ /home/yym/openjdk17/jdk17-master/build/linux-x86_64-server-slowdebug/jdk/bin/java StringTableMain
@@@@yym%%%%method address ----begin
------------------------------------
yyyyyyyyyyyyyyyyy
ddddddddddddddddddddddddddddddd
yym@yym:~/javaTest$ cat StringTableMain.java
public class StringTableMain {

    public static final String yyyyyyyyyyyyyyyyy="yyyyyyyyyyyyyyyyy";

    public static void main(String[] args) {
        "-----------yym----------".intern();
        "-----------ddd----------".printStringTable();
        String ddddddddddddddddddddddddddddddd="ddddddddddddddddddddddddddddddd";
        System.out.println("------------------------------------");
        System.out.println(yyyyyyyyyyyyyyyyy);
        System.out.println(ddddddddddddddddddddddddddddddd);
    }

}


http://www.kler.cn/a/443819.html

相关文章:

  • Java基于SSM框架的无中介租房系统小程序【附源码、文档】
  • Activiti开启流程实例
  • 消息队列 Kafka 架构组件及其特性
  • python如何保存.npy
  • 【C#】Ctrl+ 组合键的使用
  • maven-resources-production:ratel-fast: java.lang.IndexOutOfBoundsException
  • 图书馆管理系统(一)基于jquery、ajax
  • Linux 显示系统活动进程状态命令 ps 详细介绍
  • 如何有效修复ffmpeg.dll错误:一站式解决方案指南
  • Linux dd 命令详解:工作原理与实用指南(C/C++代码实现)
  • 单节点calico性能优化
  • springboot444新冠物资管理系统的设计与实现(论文+源码)_kaic
  • Databend 产品月报(2024年11月)
  • 【深度学习之三】FPN与PAN网络详解
  • 为SSH2协议服务器的用户设置密钥
  • “视觉革命:走进可视化AI识别系统的智能世界
  • 深度学习项目的 Python 实现复现指南
  • Day27 - 大模型微调,LLaMA搭建
  • 初学stm32 ——— 串口通信
  • elementui在任意页面点击消息,弹出消息对应页面处理弹窗
  • 2.metagpt中的软件公司智能体 (ProductManager 角色)
  • @Resource与@Autowire
  • VGGNet:深度学习中的卷积神经网络经典之作
  • Elasticsearch 实战应用:开启数据搜索与分析新征程
  • c++ 找第一个只出现一次的字符
  • 人力资本管理SaaS的升级之路:群硕以本地化+云创新驱动行业变革