`

编译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

    kali学习手册

    这本书由Ric Messier编写,他是一位经验丰富的信息安全专家,持有GCIH、GSEC、CEH、CISSP等多项认证。 本书的内容涵盖了使用Kali Linux进行安全测试和渗透测试的基础知识与高级技巧。安全测试通常指评估计算机系统...

    IT Certification Roadmap

    - **GCIH (GCIH: Certified Incident Handler)**:针对事件响应和处理的专业认证。 #### 四、网络与云计算技术 网络技术是连接全球的关键技术之一,而云计算则是现代企业不可或缺的服务模式。相关认证包括: - **...

    堆溢出攻击教程(heap overflow attack)

    - 在编译时分配固定大小的内存空间,如`char buffer[256];`。 - 缓冲区大小固定,不能改变。 **动态变量**: - 通过`malloc()`或`new()`等函数在运行时动态分配内存空间,如`char *buffer = malloc(256);`。 - 缓冲...

    pass-the-hash-attacks-tools-mitigation_33283.pdf

    ### Pass-the-Hash攻击:工具与缓解方法 #### 概述 Pass-the-Hash(PTH)攻击是一种利用未加盐的密码散列进行身份冒充的技术。这种攻击主要发生在Windows域环境中,攻击者通过获取目标用户的哈希值,而不是实际密码,...

    Practical packet analysis-Wireshark

    作者Chris Sanders是一位计算机安全顾问、作家和研究员,他持有包括CISSP、GCIA、GCIH和GREM在内的多项行业认证。作为Wireshark的日常使用者,Sanders在其博客和***网站上定期发表文章,将该书的全部版税捐赠给了...

    wireshark抓包英文教材

    作者Chris Sanders是一位计算机安全顾问、作家和研究员,他持有包括CISSP、GCIA、GCIH和GREM在内的多个行业认证,并且定期为***和自己的博客***撰写文章。Sanders日常工作中使用Wireshark进行包分析,并且居住在...

Global site tag (gtag.js) - Google Analytics