`

编译GCIH的方法

    博客分类:
  • java
 
阅读更多

 

TaobaoJVM目前主要支持amd64(X86_64)平台

所需环境:
操作系统:Linux(kernel < 3.0)
软件:gcc(<4.7), make, Mercurial, 已安装的JDK6

具体步骤:
1.目前的TaobaoJVM基于OpenJDK6b24对应的hotspot,因此首先从OpenJDK官网上下载其对应的repo:

 hg clone http://hg.openjdk.java.net/jdk6/jdk6/hotspot/ hotspot

2.进入hotspot目录,将版本调整到准确的changeset:

 hg up -r 2419

3.按照编号顺序依次打上TaobaoJVM的patch,例如:

 hg patch TaobalJVM1.patch

4.打完所有patch后,在make文件夹下执行如下命令进行build:

 make product LP64=1 ALT_BOOTDIR=$JAVA_HOME HOTSPOT_BUILD_JOBS=8

注:debug版本需将“product”改为“fastdebug”或“jvmg”,JAVA_HOME需要设置一个已经安装的JDK6的路径,HOTSPOT_BUILD_JOBS可以根据机器CPU核数进行合理设置。生成的JVM文件libjvm.so会在hotspot/build/linux/linux_amd64_compiler2/product/下,将其放入已安装的JDK6的jre/lib/amd64/server(client模式则为client)目录下即可取代原有的JVM,也可以在“amd64”里新建一个目录,比如“test”,将libjvm.so放入其中,启动Java程序时加上参数-XXaltjvm=test即可使用。

 

GC-Invisible Heap的使用:

1.将[source code 1]的链接另存一下,按照上面的说明将该patch打入TaobaoJVM,需要说明的是该patch只支持X86_64平台和CMS算法。

2.将[source code 2]的链接另存为GCIH_Stub.h ,将[source code 3]的链接另存为GCIH_Stub.c,这两个文件用gcc编译成一个libgcih.so文件,命令如下: gcc -I$JAVA_HOME/include/ -I$JAVA_HOME/include/linux/ -fPIC -w -shared -o /lib64/libgcih.so ./*.c 编译出来的libgcih.so 使用的时候可以直接放到libjvm.so同目录下,也可以放到其他目录下,但是JVM启动参数一般需要加-Djava.library.path来指定该路径。

3.将[source code 4]的链接另存为GCInvisibleHeap.java ,将该文件添加到java项目中,直接调用里面的接口即可(注意,该文件的包名不要随便修改,必须和GCIH_Stub.c里面的代码同时修改,不然会初始化失败)。

4.如果使用gcih,则需要在JVM的启动参数加上如下是三个参数: -XX:+UseGCIH -XX:GCIHSize=1024m -XX:GCIHBaseAddress=25769803776 其中第一个参数是说要用gcih,第二个参数指定gcih堆的大小,第三个参数指定gcih堆的起始地址,这三个参数缺一不可。

5.最后需要注意的是使用gcih,必须指定CMS gc算法,同时必须保证移入gcih堆的数据是只读,不然一般而言会crash。

 

分享到:
评论

相关推荐

    dfirnotes:DFIR 笔记本 GCIH 金牌项目,纸

    建议的工作流程和方法展示了 DFIR 流程和技术如何集成到笔记本和 SIFT 服务器环境中,并通过笔记本中的示例调查来说明优势。 文件 DOC 中的论文草稿,txt 示例笔记本: win5mem : WinXP 的易失性内存分析:模板、...

    CEHv9 Labs Module All-In-One.pdf

    CEH v9 Labs Module All-In-One

    Reverse Engineering Malware

    This document discusses tools and techniques useful for... Portions of this document are based on the paper that we submitted to GIAC as part of a practical assignment for obtaining a GCIH Certification.

    How to Cheat at Configuring Open Source Security Tools

    Angela Orebaugh (, GCIA, GCFW, GCIH, GSEC, CCNA) is a Senior Scientist in the Advanced Technology Research Center of Sytex, Inc. where she works with a specialized team to advance the state of the art...

    基于C/C++开发的单目控制机械臂的上位机程序+视觉识别和关节角反解+源码(高分优秀项目)

    基于C/C++开发的单目控制机械臂的上位机程序+视觉识别和关节角反解+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于C/C++开发的单目控制机械臂的上位机程序+视觉识别和关节角反解+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于C/C++开发的单目控制机械臂的上位机程序+视觉识别和关节角反解+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于C/C++开发的单目控制机械臂的上位机程序+视觉识别和关节角反解+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~

    setuptools-68.2.1-py3-none-any.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    springboot 学生信息管理系统.zip

    学生管理系统是一个典型的基于 Spring Boot 的应用程序,旨在帮助学校、教育机构或培训机构管理学生信息、课程安排、成绩等。下面我将介绍一个简单的学生管理系统的设计和实现,基于 Spring Boot 框架。 功能特点 学生信息管理 添加、编辑、删除学生信息。 查询学生信息,支持按姓名、学号等条件查询。

    setuptools-0.9.8-py2.py3-none-any.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    利用python的pyautogui函数实现简单的自动化操作

    1.安装python3.4以上版本,并配置环境变量(目前有装3.9遇到坑的,我个人用的3.7.6) 教程:https://www.runoob.com/python3/python3-install.html 2.安装依赖包 方法:在cmd中(win+R 输入cmd 回车)输入 pip install pyperclip 回车 pip install xlrd 回车 pip install pyautogui==0.9.50 回车 pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple 回车 pip install pillow 回车 这几步如果哪步没成功,请自行百度 如 pip install opencv-python失败 3.把每一步要操作的图标、区域截图保存至本文件夹 png格式(注意如果同屏有多个相同图标,回默认找到最左上的一个,因此怎么截图,截多大的区域,是个学问,如输入框只截中间空白部分肯定是不行的,宗旨就是“唯一”) 4.在cmd.xls 的sheet1 中,配置每一步的指令,如指

    setuptools-38.2.0.zip

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    java毕业设计之鲜花销售网站的设计与实现源码.zip

    毕业设计之鲜花销售网站的设计与实现源码.zip毕业设计之鲜花销售网站的设计与实现源码.zip毕业设计之鲜花销售网站的设计与实现源码.zip毕业设计之鲜花销售网站的设计与实现源码.zip

    药店销售管理系统ssm(药品销售)【说明】资源来源网络以及部分开源社区、仅供参考与学习、项目不可商用、一切后果由使用者承担、若

    药店销售管理系统ssm(药品销售)【说明】资源来源网络以及部分开源社区、仅供参考与学习、项目不可商用、一切后果由使用者承担、若是侵权请联系删除

    JDK1.8 API 中文文档 高清完整版 CHM.zip

    JDK1.8 API 中文文档 高清完整版 CHM

    母亲节快乐python脚本

    母亲节快乐python脚本

    华中科技大学电信专业 课程资料 作业 代码 实验报告-通信电子线路-内含源码和说明书.zip

    华中科技大学电信专业 课程资料 作业 代码 实验报告-通信电子线路-内含源码和说明书.zip

    1999-2022年各省城镇居民人均消费支出数据(无缺失).xls

    1999-2022年各省城镇居民人均消费支出数据(无缺失) 1、时间:1999-2022年 2、来源:国家统计J、统计NJ 3、指标:城镇居民人均消费支出 4、范围:31省 5、缺失情况:无缺失

    setuptools-49.2.1-py3-none-any.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    基于单片机的电梯程序控制系统.zip

    基于单片机的系统

    setuptools-20.6.8.zip

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    分布式系统课程实验-内含源码和说明书.zip

    分布式系统课程实验-内含源码和说明书.zip

Global site tag (gtag.js) - Google Analytics