OpenJDK

Centos下快速安装JDK并设置JAVA_HOME

好久不见. 提交于 2020-08-14 10:49:46
更新yum源列表 yum update 查找jdk版本 yum search jdk | grep 1.8 选择这个 java-1.8.0-openjdk.x86_64 ,即java8版本 安装jdk8 yum install java-1.8.0-openjdk.x86_64 查看java是否安装成功 java -version 查找JDK安装目录 update-alternatives --config java JAVA_HOME即为红框里面的路径 博主:测试生财 座右铭:用测试完成原始积累,用投资奔向财务自由 csdn: https://blog.csdn.net/ccgshigao 博客园: https://www.cnblogs.com/qa-freeroad/ 51cto: https://blog.51cto.com/14900374 来源: oschina 链接: https://my.oschina.net/u/4398725/blog/4493248

JVM相关

喜欢而已 提交于 2020-08-13 14:42:46
本文基于 OpenJDK 11 在分析线上 JVM 性能问题的时候,我们可能会碰到下面这些场景: 1.GC 本身没有花多长时间,但是 JVM 暂停了很久,例如下面: 2.JVM 没有 GC,但是程序暂停了很久,而且这种情况时不时就出现。 这些问题一般和 SafePoint 还有 Stop the World 有关。 什么是 SafePoint?什么是 Stop the world?他们之间有何关系? 我们先来设想下如下场景: 当需要 GC 时,需要知道哪些对象还被使用,或者已经不被使用可以回收了,这样就需要每个线程的对象使用情况。 对于偏向锁(Biased Lock),在高并发时想要解除偏置,需要线程状态还有获取锁的线程的精确信息。 对方法进行即时编译优化(OSR栈上替换),或者反优化(bailout栈上反优化),这需要线程究竟运行到方法的哪里的信息。 对于这些操作,都需要线程的各种信息,例如寄存器中到底有啥,堆使用信息以及栈方法代码信息等等等等,并且做这些操作的时候,线程需要暂停,等到这些操作完成,否则会有并发问题。这就需要 SafePoint。 Safepoint 可以理解成是在代码执行过程中的一些特殊位置 ,当线程执行到这些位置的时候, 线程可以暂停 。在 SafePoint 保存了其他位置没有的 一些当前线程的运行信息,供其他线程读取 。这些信息包括:线程上下文的任何信息

小师妹学JVM之:JIT中的LogCompilation

自闭症网瘾萝莉.ら 提交于 2020-08-13 10:38:34
简介 我们知道在JVM中为了加快编译速度,引入了JIT即时编译的功能。那么JIT什么时候开始编译的,又是怎么编译的,作为一个高傲的程序员,有没有办法去探究JIT编译的秘密呢?答案是有的,今天和小师妹一起带大家来看一看这个编译背后的秘密。 更多精彩内容且看: 区块链从入门到放弃系列教程-涵盖密码学,超级账本,以太坊,Libra,比特币等持续更新 Spring Boot 2.X系列教程:七天从无到有掌握Spring Boot-持续更新 Spring 5.X系列教程:满足你对Spring5的一切想象-持续更新 java程序员从小工到专家成神之路(2020版)-持续更新中,附详细文章教程 LogCompilation简介 小师妹:F师兄,JIT这么神器,但是好像就是一个黑盒子,有没有办法可以探寻到其内部的本质呢? 追求真理和探索精神是我们作为程序员的最大优点,想想如果没有玻尔关于原子结构的新理论,怎么会有原子体系的突破,如果没有海森堡的矩阵力学,怎么会有量子力学的建立? JIT的编译日志输出很简单,使用 -XX:+LogCompilation就够了。 如果要把日志重定向到一个日志文件中,则可以使用-XX:LogFile= 。 但是要开启这些分析的功能,又需要使用-XX:+UnlockDiagnosticVMOptions。 所以总结一下,我们需要这样使用: -XX:

docker里边安装ubuntu启动jar文件

时光毁灭记忆、已成空白 提交于 2020-08-13 04:27:53
下载基础镜像 测试: 用ubuntu镜像输出hello world 如果没有ubuntu镜像,docker会默认给下载个最新的ubuntu镜像 docker run ubuntu echo 'hello world' 以交互式运行 docker run -i -t ubuntu /bin/bash # -i --interactive=ture|false 默认是false 始终打开标准输入 -t --tty=true|false 默认是false 为docker分配个伪tty终端 这样新创建的容器才能提供个交互式的shell 在ubuntu容器中就和在ubuntu服务器一样 执行ps -ef 测试 exit退出 docker attach 容器id能进去容器 ctrl+q+p能退出后台执行容器 添加各种依赖 添加ppa仓库 这个是OpenJDK 8 ppa仓库。 add-apt-repository ppa:openjdk-r/ppa 更新ubuntu的下载指令 apt-get update 安装openjdk8 apt-get install openjdk-8-jdk 安装curl apt install curl 安装vim apt-get install -y vim 安装sz rz apt-get install lrzsz 安装net指令库 apt install

RocketMQ系列(二)环境搭建

天涯浪子 提交于 2020-08-13 00:54:54
RocketMQ的基本概念在上一篇中给大家介绍了,这一节将给大家介绍环境搭建。RocketMQ中最基础的就是NameServer,我们先来看看它是怎么搭建的。 NameServer RocketMQ要求的环境是JDK8以上,我们先检查一下环境, [root@centOS-1 ~]# java -version openjdk version "11.0.3" 2019-04-16 LTS OpenJDK Runtime Environment 18.9 (build 11.0.3+7-LTS) OpenJDK 64-Bit Server VM 18.9 (build 11.0.3+7-LTS, mixed mode, sharing) 我的这个机器并没有刻意的安装JDK,而是系统自带的OpenJDK 11,这应该也是没有问题的。然后我们从RocketMQ官网下载最新的安装包,并且上传到 /opt 目录下, [root@centOS-1 opt]# ll -rw-r--r--. 1 root root 13838456 6月 3 08:49 rocketmq-all-4.7.0-bin-release.zip 然后我们解压这个zip包, [root@centOS-1 opt]# unzip rocketmq-all-4.7.0-bin-release.zip

Ubuntu下快速安装JDK并设置JAVA_HOME

感情迁移 提交于 2020-08-12 14:30:25
更新软件源 sudo apt update 查找jdk版本 apt search jdk 选择这个openjdk-8-jdk,即java8版本 安装jdk8 apt install openjdk-8-jdk 查看java是否安装成功 java -version 这样就大工告成了,但是很多软件,例如jenkins,zookeeper,sonarqube,jmeter等工具需要知道JAVA_HOME在哪里,该怎么办呢? 看下是否被设置到环境变量: echo $JAVA_HOME 这里使用apt install安装,并没有把JAVA_HOME内置到环境变量,那么我们先看下java安装到哪里了。 which java 可以看到java的路径了 看来java是由alternatives管理的,即可以在系统中设置并切换多个jdk版本。 查找系统中可用的java版本 update-alternatives --config java 红框里即为的java的安装路径,进入对应目录进行验证下 cd /usr/lib/jvm/java-8-openjdk-amd64 && ll 设置JAVA_HOME export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 >> /etc/profile 重新加载一下环境变量 source /etc/profile 至此

从字节码层面,解析 Java 布尔型的实现原理

夙愿已清 提交于 2020-08-12 06:34:23
最近在系统回顾学习 Java 虚拟机方面的知识,其中想到一个很有意思的问题: 布尔型在虚拟机中到底是什么类型? 要想解答这个问题,我们看 JDK 的源码是无法解决源码的,我们必须深入到 class 文件中才能解决问题。于是他给出了这么一道题: public class Foo{ static boolean flag; public static void main(String[] args){ flag = true; if(flag){ System.out.println("Hello, Java!"); } if(flag == true){ System.out.println("Hello, JVM!"); } } } 这道题很简单,结果是输出: Hello, Java! Hello, JVM! 但我们要深入到 class 文件中去看看 JVM 对于这段代码,它到底是怎么执行字节码指令的。于是我们使用 javac 命令得到它的 class 字节码文件: javac Foo.java 字节码文件都是十六进制的字符集合,我们一般可以用 javap 命令来实现反汇编工作。但这次我们使用另一个工具,即 asmtools。它是 OpenJDK 提供的另一个反汇编工具。 java -cp /path/to/asmtools.jar org.openjdk.asmtools

为什么大部分程序员还在用Java 8?

一曲冷凌霜 提交于 2020-08-11 17:43:33
不说 Android,Java 本身都很碎片化。尽管 Java 升级换代,但于开发者来说,还是紧紧地抱着 Java 8 不放,这是为什么呢?一起来看下吧。 以下为译文: 近日的调查结果显示,绝大多数开发人员的主要应用程序中使用的还是 Java 8。 数据来源: https://snyk.io/blog/jvm-ecosystem-report-2018/ 在Java 8之前,用户接受更高版本的Java的过程非常缓慢,特别是在企业中,因为在生产环境中接受新版本Java非常困难。 而引入了Lambda表达式和流的Java 8对许多开发人员来说都非常有吸引力。同时,微服务、持续发布实践和更好的自动化测试也让接受新版本语言变得更容易,风险比以前更小。 那么,鉴于这些因素,为什么从Java 9开始每年两次发布新版本的情况下,开发人员还在坚持使用Java 8呢?目前Java最新的版本是Java 12,然而很少有人使用9~12的版本。推荐: Java 12 正式发布,8大新特性! 估计你能猜到这其中的原因:“很复杂”。Java 8之后的版本发生了很多变化,这可能会导致各个公司在Java升级上举棋不定。 6 个月一次的发布节奏 从2017年9月发布Java 9开始,Oracle每六个月就会发布一个新版本的JDK,具体来说是每年的三月和九月。现在持续发布大行其道

CentOS下安装JDK的三种方法

自闭症网瘾萝莉.ら 提交于 2020-08-11 05:57:19
方法一:手动解压JDK的压缩包,然后设置环境变量 1.在/usr/目录下创建java目录 [root@localhost ~]# mkdir/usr/java [root@localhost ~]# cd /usr/java 2.下载jdk,然后解压 [root@localhost java]# curl -O http://download.Oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz [root@localhost java]# tar -zxvf jdk-7u79-linux-x64.tar.gz 3.设置环境变量 [root@localhost java]# vi /etc/profile 在profile中添加如下内容: #set java environment JAVA_HOME=/usr/java/jdk1.7.0_79 JRE_HOME=/usr/java/jdk1.7.0_79/jre CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin export JAVA_HOME JRE_HOME CLASS_PATH