java虚拟机

来源:互联网 发布:mac 虚拟机 天正 编辑:程序博客网 时间:2024/06/01 10:29

[TOC]

深入理解jvm虚拟机


第一章 编译openjdk7/8

编译openjdk

参考0:获取JDK源码
参考1:CentOS 6.5上编译安装OpenJDK7源码
参考2:Ubuntu 14.04.3 64位环境下OpenJDK7编译
参考3:CentOS下编译安装OpenJDK6过程遇到的问题
参考4:Linux环境编译安装OpenJDK
参考5:Centos7 配置jdk替换openjdk

  1. 准备软件
    openjdk
    ant
    freetype
    [jdk 需要到oracle注册]jdk-6u26-linux-x64-rpm.bin
  1. 安装ant(ant解压到了/opt目录下,并在path中创建了一个指向它的软连接) , jdk , fretype
ln -s /opt/apache-ant-1.9.7/bin/ant /usr/bin/ant
  1. 配置默认centos的默认jdk,详见参考3:

  2. 编译脚本(名字可随意openjdkbuild,然后source openjdkbuild)

unset CLASSPATHunset JAVA_HOMEexport LANG=Cexport ALT_BOOTDIR=/usr/java/jdk1.6.0_26export ANT_HOME=/opt/apache-ant-1.9.7export ALT_FREETYPE_LIB_PATH=/usr/local/libexport SKIP_DEBUG_BUILD=falseexport SKIP_FASTDEBUG_BUILD=trueexport DEBUG_NAME=debugexport ALT_FREETYPE_HEADERS_PATH=/usr/local/include/freetype2   
  1. 下载openjdk7
$ hg clone http://hg.openjdk.java.net/jdk7u/jdk7u jdk7u  $ cd jdk7u  $ bash ./get_source.sh  
  1. 编译完成




编译openjdk8

ubuntu 14.04下

bash ./configure --enable-debugmake CONF=linux-x86_64-normal-server-fastdebug
## Finished jdk (build time 00:03:26)----- Build times -------Start 2016-07-23 11:53:42End   2016-07-23 12:12:3600:00:28 corba00:13:40 hotspot00:00:18 jaxp00:00:24 jaxws00:03:26 jdk00:00:37 langtools00:18:54 TOTAL-------------------------Finished building OpenJDK for target 'default'
hadoop@hadoop:~/jdk8u/build/linux-x86_64-normal-server-fastdebug/jdk/bin$ ./java -versionopenjdk version "1.8.0-internal-fastdebug"OpenJDK Runtime Environment (build 1.8.0-internal-fastdebug-hadoop_2016_07_23_11_53-b00)OpenJDK 64-Bit Server VM (build 25.71-b00-fastdebug, mixed mode)

Centos6.8下

# yum install java-1.7.0-openjdk  java-1.7.0-openjdk-devel 
----- Build times -------Start 2016-07-24 03:30:24End   2016-07-24 03:48:5500:00:35 corba00:12:10 hotspot00:00:17 jaxp00:00:30 jaxws00:04:29 jdk00:00:30 langtools00:18:31 TOTAL-------------------------Finished building OpenJDK for target 'default'

第四章 虚拟机性能监控与故障处理工具

  • JDK的命令行工具
  • JDK的可视化工具

jdk bin目录下的命令工具,命令工具大多数是jdk\lib\tools.jar类库的一层包装而已。
JDK开发团队选择采用java代码来实现这些监测工具是特别有意思的:当应用程序部署到生产环境后,无论是直接接触物理服务器还是远程Telnet到服务器上都可能会受到限制。借助tools.jar类库里面的接口,我们可以直接在应用程序中实现功能强大的监控分析功能。

  • tools.jar中的类库不属于java标准API,如果引入这个类库,就意味着你的程序只能运行与Hotspot(或者一些从Sun买了JDK源码的License的虚拟机,如IBM J9,BEA JRockit)上面,或者在部署程序时需要一起部署tools.jar

  • [ ] P79 表4-1 Sun JDK监控和故障处理工具

疯狂java 16课

P135 4.3.3 与垃圾回收的附加选项

P182 -Xlint:fallthrough选项,java编译器会提示缺少break;的警告。

原创粉丝点击