OpenJDK

JVM 相关

◇◆丶佛笑我妖孽 提交于 2020-12-25 18:01:02
什么是 WhiteBox API WhiteBox API 是 HotSpot VM 自带的白盒测试工具,将内部的很多核心机制的 API 暴露出来,用于白盒测试 JVM,压测 JVM 特性,以及辅助学习理解 JVM 并调优参数。WhiteBox API 是 Java 7 引入的,目前 Java 8 LTS 以及 Java 11 LTS(其实是 Java 9+ 以后的所有版本,这里只关心 LTS 版本,Java 9 引入了模块化所以 WhiteBox API 有所变化)都是有的。但是默认这个 API 并没有编译在 JDK 之中,但是他的实现是编译在了 JDK 里面了。所以如果想用这个 API,需要用户自己编译需要的 API,并加入 Java 的 BootClassPath 并启用 WhiteBox API。 WhiteBox API 如何实现的 WhiteBox API 是一个 Java 类, 位于 JDK 的测试包中,默认没有编译进标准发行版的 JDK 中 。 test/lib/sun/hotspot/WhiteBox.java package sun.hotspot; public class WhiteBox { //仅举两个例子,省略其他 api 以及代码 // Force Young GC public native void youngGC(); // Force

Android 源码

被刻印的时光 ゝ 提交于 2020-12-22 17:15:39
Ubuntu16.04 python3 -V ##python版本要大于等于3.6 安装Python3.7 更新软件源 https://blog.csdn.net/lxlong89940101/article/details/89488461 下载安装Python https://blog.csdn.net/u014775723/article/details/85213793 AOSP curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo chmod +x repo 为了方便可以将其拷贝到你的PATH里。 export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo' repo的运行过程中会尝试访问官方的git源更新自己,如果想使用tuna的镜像源进行更新,可以将如下内容复制到你的~/.bashrc里 git config --global user.email "you@example.com" git config --global user.name "Your Name" repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b

github clone 项目很龟速 ?那是你不知道这个小技能,快到起飞!

巧了我就是萌 提交于 2020-12-20 08:08:17
听说OpenJDK的源码可以在github上直接clone,再也不用通过hg的方式获取了,马上找到仓库地址: https://github.com/openjdk/jdk 反手一个命令: git clone git@github.com:openjdk/jdk.git 然后开始蛮长的等待… 动了,它动了!!! 太崩溃了,这clone速度也太慢了。 下面介绍一个简单的方法,可以很好的解决这个问题:国内的gitee可以直接同步github上的仓库,那如果我先把openjdk的git仓库先同步到gitee上,再clone到本地,这样是不是可以快到飞起? 说干就干! 1、 先注册一个gitee账号 2、注册完成后点击页面右上角的 “+” 号,选择新建仓库 3、在新页面的下边选择“导入已有项目”,并填入github上的仓库地址 4、填入地址之后点击“创建按钮” 5、等待gitee拉取完成,这个过程因项目大小而异,体验下来还是挺快的,gitee内部做了优化? 6、拉取完成,就可以直接在页面上查看同步过来的代码 7、这下可以快乐的执行 git clone https://gitee.com/whywhy/jdk 命令了,下面是我本地的速度 没错!clone下载速度达到了5M/s。 还在被github速度困扰的你,不妨可以试试。 来源: oschina 链接: https://my.oschina

2020这一年总结出来的Java面试题,常频面试题大汇总~

≡放荡痞女 提交于 2020-12-17 21:33:43
面试就是大家身边总是存在各种各样的可能,而自身又具备这样的能力,就忍不住想试一试,尤其是到了年关,是一个好的蓄势并且认真积累的阶段。当然面试套路众多,但对于技术面试来说,主要是考察一个人的技术能力和沟通能力。不同类型的面试官根据自身的理解问的问题也不尽相同,没有规律可循。 “面试造火箭,工作拧螺丝”首先咱得能拧,才有造火箭的可能啊,这一年整理很多面试的高频问点也做了解析,今天在这分享给大家! 博主已将以下这些面试题整理成了一个Java面试手册,是PDF版的。 需要本资料全部面试题的,可以点击这里!!暗号ky! Java语法基础 1.面向对象和面向过程的区别 面向过程 优点: 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗 资源;比如单片机、嵌入式开发、Linux/Unix 等一般采用面向过程开发,性能是 最重要的因素。 缺点: 没有面向对象易维护、易复用、易扩展 面向对象 优点: 易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特 性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护 缺点: 性能比面向过程低 Java 语言有哪些特点 1. 简单易学; 2. 面向对象(封装,继承,多态); 3. 平台无关性( Java 虚拟机实现平台无关性); 4. 可靠性; 5. 安全性; 6. 支持多线程( C++ 语言没有内置的多线程机制

centos7.5安装openjdk11

ⅰ亾dé卋堺 提交于 2020-12-17 17:23:35
1:搜索安装包 yum search java-11-openjdk 2:安装jdk11 yum install -y java-11-openjdk 3:查看当前版本 java -version 4:设置JAVA_HOME (一)找到JAVA安装目录 方式一 ls -l $(which java) 方式二 which java 如果显示的是 /usr/bin/java 请执行下面步骤 ls -lr /usr/bin/java 输出应为: /usr/bin/java -> /etc/alternatives/java ls -lrt /etc/alternatives/java 输出: /etc/alternatives/java -> /usr/lib/jvm/java-11-openjdk-11.0.3.7-0.el7_6.aarch64/jre/bin/java 上面的 /usr/lib/jvm/java-11-openjdk-11.0.3.7-0.el7_6.aarch64 就是JAVA的安装路径 (二)设置 1):编辑环境变量的配置文件 vi /etc/profile 2):在文件底部加入以下配置 export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.3.7-0.el7_6.aarch64 export JRE_HOME=

Linux下安装jdk

六月ゝ 毕业季﹏ 提交于 2020-12-17 13:49:25
Linux下安装jdk 步骤1:卸载 CentOS 自带的openjdk 1.1 通过rpm包管理器命令查看CentOS自带的 openjdk 的版本信息 rpm -qa|grep java 1.2 通过rpm包管理器命令卸载上图中框中的4个openjdk rpm -e --nodeps java-1.7.0-openjdk-1.7.0.191-2.6.15.5.el7.x86_64 rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.191-2.6.15.5.el7.x86_64 rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.181-7.b13.el7.x86_64 rpm -e --nodeps java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64 步骤2:通过MobaXterm工具上传jdk压缩包到linux系统 默认会将文件上传到当前连接用户的home目录。如果是itcast用户则上传到/home/itcast下,如果是root就上传到/root下。其它同理。 步骤3:在/usr下创建java目录 3.1 如果当前操作用户不是root,需要先切换到root用户,否则无法在/usr下创建目录 su root 输入密码 3.2 在

Java Thread之start和run方法的区别

自古美人都是妖i 提交于 2020-12-17 07:58:04
原创转载请注明出处: https://www.cnblogs.com/agilestyle/p/11421515.html start 用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行run()方法,这里方法run()称为线程体,它包含了要执行的这个线程的内容,run方法运行结束,此线程随即终止。 start方法源码示例 一个 Java 线程的创建本质上就对应了一个本地线程(native thread)的创建,两者是一一对应的。 关键问题是:本地线程执行的应该是本地代码,而 Java 线程提供的线程函数(run)是 Java 方法,编译出的是 Java 字节码。 所以, Java 线程其实提供了一个统一的线程函数,该线程函数通过 Java 虚拟机调用 Java 线程方法 , 这是通过 Java 本地方法 start0 调用来实现的。 也就是新创建的线程启动调用native start0方法,而这些native方法的注册是在Thread对象初始化的时候完成的 Thread 类有个 registerNatives 本地方法,该方法主要的作用就是注册一些本地方法供 Thread 类使用,如

JVM中8种垃圾收集器小结

和自甴很熟 提交于 2020-12-10 19:24:20
JDK 发展历史 JAVA 1.0,代号Oak橡树) 于 1996-01-23 发行 JAVA 1.1 1997-02-19 发行, 主要更新内容: 引入 JDBC 添加内部类支持 引入 JAVA BEAN 引入 RMI 引入反射 JAVA 1.2, 代号 Playground(操场) 1998-12-8 发行,主要更新内容: 引入集合框架 对字符串常量做内存映射 引入 JIT(Just In Time)编译器 引入打包文件数字签名 引入控制授权访问系统资源策略工具 引入 JFC(Java Foundation Classes),包括 Swing1.0,拖放和 Java2D 类库 引入 Java 插件 JDBC 中引入可滚动结果集,BLOB,CLOB, 批量更新和用户自定义类型 Applet 中添加声音支持 JAVA1.3,代号 Kestrel(红隼) 2000-5-8 发布,主要更新内容: 引入 Java Sound API 引入 jar 文件索引 对 Java 各方面多了大量优化和增强 Java Platform Debugger Architecture 用于 Java 调式的平台。 JAVA 1.4,代号 Merlin(隼) 2004-2-6 发布(首次在 JCP 下发行),主要更新内容: 添加 XML 处理 添加 Java 打印服务(Java Print Service

windows和linux下查看java安装路径

半腔热情 提交于 2020-12-07 00:55:36
windows下查看版本:(默认安装路径安装就不需要去配环境变量了) 1 java -version windows下查看jdk安装路径:得要你配置了环境变量。 1 set java_home 查看jre安装路径: 1 java -verbose Linux下安装版本查看方式和windows下一样,至于安装路径,如图所示: 以上是通过命令 sudo apt-get install openjdk-8-jdk 安装的开源的openjdk,服务器是ubuntu18.04。 也可以通过手动安装oracle官方版本jdk。安装后配置环境变量后:java -version which java: 来源: oschina 链接: https://my.oschina.net/u/4323385/blog/3387010

001. kogito初体验-环境准备及HelloWorld运行

血红的双手。 提交于 2020-12-05 09:59:07
工作流引擎一直都没有纳入我的知识范围,所以我并没有玩过jbpm, activiti这种传统的工作流引擎。无奈业务永远都做不完,所以终于要对BPM下手了。 1. 环境准备 截止到2020年10月19日,kogito最新版本是Pre-release 0.17.0,正式版1.0还在beta阶段。中文资料还太少,学习主要是从官方文档下手。还好kogito提供了很多的示例来满足一个工作流小白对这个框架的初体验。 $ git clone https://github.com/kiegroup/kogito-examples.git 准备工作可没这么简单,你还需要 IDE: VSCODE(官方推荐)+ kogito插件 JDK 11,为了避免一些可能存在的麻烦,我使用了openjdk 当下最新的15版。 MAVEN 3.6.2 or later 2. 示例:hello-world 2.1 运行示例 example项目下第一个示例,定义了一个脚本流程,如下图所示。 我们为这个流程指定一个唯一的process-id叫作: // 流程说明 1. 开始 - 入参name 2. 脚本任务 - SayHello,java,System . out . println ( "Hello " + name ) ; 3. 脚本任务 - UpdateMessage,java,kcontext .