OpenJDK

Does OpenJDK 1.8 support JFR?

自古美人都是妖i 提交于 2020-05-15 01:13:51
问题 I'm not sure if OpenJDK 1.8 supports JFR (java flight recorder). I know it was requested on the OpenJDK bugs forum. Using OpenJDK on Linux and executing the following from a terminal: jcmd `<pid>` JFR.start returns java.lang.IllegalArgumentException: Unknown diagnostic command 回答1: The OpenJDK 8 source code does not include the Java Flight Recorder implementation. That feature has been targeted to become part of OpenJDK source code with JDK 11, per http://openjdk.java.net/projects/jdk/11/ .

服务器docker部署使用最新dubbo-admin(2)

99封情书 提交于 2020-05-08 12:32:38
下载最新dubbo-admin https://github.com/apache/dubbo-admin 1、执行打包 mvn clean package 2、上传 dubbo-admin-develop/dubbo-admin-distribution/target /dubbo-admin-0.2.0-SNAPSHOT.jar 到服务器 3、在 dubbo-admin-0.2.0-SNAPSHOT.jar 同级目录新增 Dockerfile 文件 FROM openjdk:8-jre LABEL maintainer="dev@dubbo.apache.org" COPY dubbo-admin-0.2.0-SNAPSHOT.jar /app.jar ENTRYPOINT ["java","-XX:+UnlockExperimentalVMOptions","-XX:+UseCGroupMemoryLimitForHeap","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] EXPOSE 8080 4、创建镜像 docker build -t dubbo-admin:0.2.0-SNAPSHOT . 5、运行 docker run -p 8089:8080 -dit --name my_dubbo

20182332 实验一《Linux基础与Java开发环境》实验报告

两盒软妹~` 提交于 2020-05-07 19:04:12
20182332 实验一《Linux基础与Java开发环境》实验报告 课程:《程序设计与数据结构》 班级: 1823 姓名: 盛国榕 学号:20182332 实验教师:王志强 实验日期:2019年9月9日 必修/选修: 必修 1.实验内容 基于命令行和IDE[ Intellj IDEA 简易教程 ]进行简单的Java程序编辑、编译、运行和调试。(本次实验主要使用命令行的方式) 练习Linux基本命令; 学习Java程序的 JDB调试技能 编写简单的Java程序。 2.实验过程及结果 JDB调试: 用vim建立一个简单的小程序 vim code.java package SGR1; import java.util.Scanner;//导入java.util.Scanner public class code { public static void main(String[] args) { // 变量保存成绩 // int score = 53; Scanner input=new Scanner(System.in);//创建Scanner对象; System.out.print("请输入考试成绩信息"); int score=input.nextInt();//获取用户输入的值并保存在变量中; // 变量保存加分次数 int count = 0; System.out

linux安装open jdk

。_饼干妹妹 提交于 2020-05-07 17:54:21
以下有好人提供的安装包,按需提取 https://github.com/AdoptOpenJDK/openjdk8-upstream-binaries/releases/tag/jdk8u212-b03 将安装包从windows复制到linux 然后从左边本机把文件拖到右边linux系统 解压 [root@rhflow21 java]# tar -zxvf OpenJDK8U-x64_linux_8u212b03.tar.gz (解压遇到问题 gzip: stdin: unexpected end of file tar: Unexpected EOF in archive tar: Unexpected EOF in archive tar: Error is not recoverable: exiting now 多半是包已经损坏了 ) 配置环境 →cd到相应的文件 →打开文件 vi或者vim 文件名 i进入编辑模式 Esc退出编辑模式 :wq保存修改并退出文件 →添加/修改下面内容 export JAVA_HOME=/usr/java/openjdk-8u212-b03 export PATH=$JAVA_HOME/bin:$PATH 刷新配置文件 [root@rhflow21 java]# source /etc/profile 检查是否安装成功 [root

Oracle JDK和OpenJDK之间的区别

 ̄綄美尐妖づ 提交于 2020-05-07 08:56:23
问题: NOTE: This question is from 2014. As of Java 11 OpenJDK and Oracle JDK are converging. 注意:此问题来自2014年。从Java 11开始,OpenJDK和Oracle JDK正在融合。 Are there any crucial differences between Oracle and OpenJDK? Oracle和OpenJDK之间有什么重要区别吗? For example, are the garbage collection and other JVM parameters the same? 例如,垃圾回收和其他JVM参数是否相同? Does GC work differently between the two? 两者之间的GC工作方式是否有所不同? 解决方案: 参考一: https://stackoom.com/question/1VoM3/Oracle-JDK和OpenJDK之间的区别 参考二: https://oldbug.net/q/1VoM3/Differences-between-Oracle-JDK-and-OpenJDK 来源: oschina 链接: https://my.oschina.net/stackoom/blog/4268869

springboot docker jenkins 自动化部署并上传镜像

自古美人都是妖i 提交于 2020-05-04 08:30:40
springboot docker jenkins 自动化部署并上传镜像 springboot + docker + jenkins自动化部署项目,jenkins、mysql、redis都是docker运行的,并且没有使用虚拟机,就在阿里云服务器(centos7)运行 1、前期准备工作不说了 2、在项目根目录下新建Dockerfile Dockerfile文件内容为: 基础镜像 FROM openjdk:12 作者 MAINTAINER demo demo@qq.com VOLUME /tmp 指定配置文件,以及jar包在服务器上的路径 ENTRYPOINT ["java","-Dspring.profiles.active=prod","-jar","/lcy/work/tools/tools.jar"] 暴露端口 EXPOSE 8092 3、在服务器找个目录新建一个.sh文件 !/bin/sh echo '================开始构建镜像==============' 镜像名称 IMAGE_NAME='registry.cn-beijing.aliyuncs.com/???/tools' 打包后在jenkins的地址 SOURCE_PATH='/lcy/jenkins/workspace/tools' Dockerfile执行jar包的地址 BASE_PATH='

JVM虚拟机-Class文件之常量池

﹥>﹥吖頭↗ 提交于 2020-05-03 18:17:55
一、常量池的作用 在class文件中的魔数、副版本号、主版本之后,紧接着就是常量池的数据区域了,如下图用红线包括的位置: 常量池可以比喻为Class文件里的资源仓库,它是Class 文件结构中与其他项目关联最多的数据,通常也是占用Class文件空间最大的数据项目之一,另外,它还是在Class文件中第一个出现的表类型数据项目。 二、常量池的结构 常量池的结构比较简单,前面的两个字节叫做 常量池计数器 ( constant_pool_count ),它记录了 常量池项(cp_info) 的个数。后面紧接着就是 constant_pool_count-1 个 常量池项(cp_info) 。这跟报文通信协议比较类似,首先定义报文的大小,接着就是对应大小的报文内容。 由于常量池中常量的数量是不固定的,所以在常量池的入口需要放置一项u2类型的数据,代表常量池容量计数值(constant_pool_count)。与Java中语言习惯不同,这个容量计数是从1而不是0开始的,如上图所示,常量池容量(偏移地址:0x00000008)为十六进制数0x0021,即十进制的33,这就代表常量池中有33项常量,索引值范围为1~33。在Class文件格式规范制定之时,设计者将第0项常量空出来是有特殊考虑的,这样做的目的在于,如果后面某些指向常量池的索引值的数据在特定情况下需要表达“不引用任何一个常量池项目

可运行的Java RMI示例和踩坑总结

爱⌒轻易说出口 提交于 2020-05-03 17:23:38
简述 资料参考: https://docs.oracle.com/javase/tutorial/rmi/overview.html https://blog.csdn.net/bigtree_3721/article/details/50614289 https://stackoverflow.com/questions/11273353/java-rmi-and-classnotfoundexception RMI特点 Java原生提供 可以根据一个名字来获取远程对象 调用远程对象的方法时,RMI屏蔽了底层通信细节,与远程通信就像调用本地方法一样 远程动态加载类的定义,这是RMI非常独特的功能 远程对象 面向接口,接口的实现类可以位于不同的JVM,这些用于远程调用的实现类称为 remote objects (远程对象)。 远程对象有如下特征: 实现接口 java.rmi.Remote 对象中的每个方法必须声明可能抛出 java.rmi.RemoteException RMI对于从另一个虚拟机传递过来的远程对象视为和本地对象一样。客户端使用stub来作为远程对象的代理,对stub进行方法调用,会反映到远程对象的方法调用上,stub对象实现了与远程对象相同的接口。 使用RMI构建分布式应用 后续简称提供远程调用服务的为服务端,使用远程服务的为客户端。 有如下步骤:

JVM 对象分配过程

天大地大妈咪最大 提交于 2020-05-03 17:01:51
对象分配过程 1)依据逃逸分析,判断是否能栈上分配? 如果可以,使用标量替换方式,把对象分配到 VM Stack 中。如果 线程销毁或方法调用结束后,自动销毁,不需要 GC 回收器 介入。 否则,继续下一步。 2)判断是否大对象? 如果是,直接分配到堆上 Old Generation 老年代上。如果对象变为垃圾后,由老年代GC 收集器(比如 Parallel Old, CMS, G1)回收。 否则,继续下一步。 3)判断是否可以在 TLAB 中分配? 如果是,在 TLAB 中分配堆上 Eden 区。 否则,在 TLAB 外堆上的 Eden 区分配。 栈上分配 本质上是JVM提供的一个优化技术。 基本思想:将线程私有的对象打散分配在栈 VM Stack 上 优点: 可以在函数调用结束后自行销毁对象,不需要垃圾回收器的介入,有效避免垃圾回收带来的负面影响 栈上分配速度快,提高系统性能 局限性: 栈空间小,对于 大对象 无法实现栈上分配 技术基础: 逃逸分析 、 标量替换 什么是逃逸分析? 关于 Java 逃逸分析的定义: 逃逸分析(Escape Analysis)简单来讲就是,Java Hotspot 虚拟机可以分析新创建对象的使用范围,并决定是否在 Java 堆上分配内存的一项技术。 逃逸分析的 JVM 参数如下: 开启逃逸分析: -XX:+DoEscapeAnalysis

手把手教你构建、debug、开发Java虚拟机

落花浮王杯 提交于 2020-05-02 15:52:54
Java虚拟机是Java开发者最常使用的平台,了解其中的运行原理可以帮助我们成为更好的开发者、遇到问题更快解决。对于很多虚拟机知识点,大多数人通常是通过看书或文章来了解相关知识的。这样的缺点是一个知识经过了两次信息理解传递,可能导致信息不准,那么为什么不自己去探究虚拟机的实现原理呢。了解自己常使用的工具的原理,便于更好的使用工具,就像更了解轮胎的赛车手能更好地驾驶汽车、更了解锅和菜刀的厨师可以练出更好的厨艺。而了解虚拟机的最直接的方式就是去构建、debug、开发它! 下载代码 openjdk的代码在 mercurial 中,下载起来很慢。我们使用github上的mirror即可,这里选择了一个比较新的jdk14分支,代码比较多,下载时间会稍长一些。 git clone https://github.com/openjdk/jdk14u 编译 为了构建虚拟机、以及debug调试,需要对代码进行编译。 编译依赖 编译依赖Xcode,通过AppStore搜索下载安装就可以。 编译jdk需要一个低一些版本的jdk作为boot jdk,对于jdk14先到 jdk官网 下载安装一下jdk13 然后安装编译需要的一些依赖包 brew install autoconf freetype ccache 开始编译 #首先cd到代码目录中 cd jdk14u # 进行configure bash