Augustus

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

Dockerfile构建镜像及相关命令

北慕城南 提交于 2020-04-28 15:34:03
Dockerfile 镜像描述文件 Dockerfile 是一个包含用于组合镜像的命令的文本文档 Docker通过读取 Dockerfile 中的指令按步自动生成镜像 docker build -t 机构/镜像名<:tags> Dockerfile目录 Dockerfile 基础命令 FROM - 基于基准镜像 #制作基准镜像(基于centos:lastest) FROM centos #不依赖任何基准镜像base image FROM scratch # 基于 采用openjdk8 + tomcat 9.0.22 的镜像 FROM tomcat: 9.0.22-jdk8-openjdk 尽量使用官方提供的Base Image LABEL & MAINTAINER - 说明信息 MAINTAINER SvenAugustus LABEL version = "1.0" LABEL description = "XXX" WORKDIR - 设置工作目录 WORKDIR /usr/local #自动创建 WORKDIR /usr/local/newdir 尽量使用绝对路径 ADD & COPY - 复制文件 #复制到/root ADD hello /root #添加根目录并解压 ADD test.tar.gz / ADD 除了复制,还具备添加远程文件功能 ENV - 设置环境常量

Docker使用命令

大城市里の小女人 提交于 2020-04-26 13:48:44
常用命令 # 从远程仓库抽取镜像 docker pull 镜像名<:tags> # 查看本地镜像 docker images # 创建容器,启动应用 # 使用 -d 后台运行 # 与宿主机端口映射 ,使用选项 -p 宿主机端口:容器端口 如 : docker run -p 8000:8080 tomcat docker run <-d> 镜像名<:tags> # 查看正在运行中的镜像 docker ps # 删除容器 docker rm <-f> 容器id # 删除镜像 docker rmi <-f> 镜像名:<tags> 在容器中执行命令 # exec 在对应容器中执行命令 # -it 采用交互方式执行命令 docker exec [-it] 容器id 命令 # 实例:docker exec -it 0738ed2fe68b /bin/bash # 查看容器的IP等环境信息 docker inspect 容器ID Dockerfile 镜像描述文件 Dockerfile 是一个包含用于组合镜像的命令的文本文档 Docker通过读取 Dockerfile 中的指令按步自动生成镜像 docker build -t 机构/镜像名<:tags> Dockerfile目录 Dockerfile 基础命令 FROM - 基于基准镜像 #制作基准镜像(基于centos:lastest)

pycharm报python package tools not found错误

混江龙づ霸主 提交于 2019-11-27 06:29:17
使用pycharm开发,本机是ArchLinux,安装有python2.7, python3.7两个版本 但是 pycharm报python2.7的 Pyhton Interpreter 报python package tools not found错误 原因:系统安装的pip 是到了Python3的相关目录去了,python2的pip是缺失的。 因此还需要安装python2版本对应的pip: sudo pacman -S python-pip python2-pip 至此搞定。pycharm完美运行。 by Sven Augustus 来源: oschina 链接: https://my.oschina.net/u/155593/blog/2873499