永红的互联网手记

我相信好代码和好产品改变世界!

0%

Android Runtime (ART) 是 Android 上的应用和部分系统服务使用的托管式运行时。ART 及其前身 Dalvik 最初是专为 Android 项目打造的。作为运行时的 ART 可执行 Dalvik 可执行文件并遵循 Dex 字节码规范。

ART 和 Dalvik 是运行 Dex 字节码的兼容运行时,因此针对 Dalvik 开发的应用也能在 ART 环境中运作。不过,Dalvik 采用的一些技术并不适用于 ART。有关最重要问题的信息,请参阅在 Android Runtime (ART) 上验证应用行为

阅读全文 »

腾讯:揭秘日活千万腾讯会议全量云原生化上TKE技术实践

文章链接:https://juejin.cn/post/6844904192830603272

本文总结了腾讯会议在TKE容器化部署时用到的平台相关特性,包括业务镜像自动分批灰度发布、ConfigMap分批灰度发布、Pod内A/B容器ms级切换发布、多集群发布管理、基于DynamicQuota的产品配额管理、探测节点和集群稳定性问题以提升自愈能力等。

华为:远程办公利器华为云WeLink,如何练就硬核抗压能力?

文章链接:https://zhuanlan.zhihu.com/p/106388133

业务快速增长带来的挑战聚焦在海量请求的冲击,从消息到语音模块、视频会议系统,华为云WeLink核心业务采用全容器化架构,结合华为云容器引擎单集群百万容器的超大规模支撑,可以迅速在新扩容的云服务器上启动业务,每秒最快可新增1000业务实例,大大降低了业务高峰时段的断线率、故障率和请求等待时长。更能通过瑶光的二次调度进行热点消除,保障计算资源压力的平均分布,助力业务平稳运行。

阅读全文 »

垃圾回收器概述

垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商,不同版本的 JVM 来实现。

由于 JDK 的版本处于高速迭代过程中,因此 Java 发展至今已经衍生了众多的 GC 版本。

阅读全文 »

System.gc() 的理解

在默认情况下,通过 System.gc() 或者 Runtime.getRuntime().gc() 的调用,会显示触发 Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。

然而 System.gc() 调用附带一个免责声明,无法保证对垃圾收集器的调用。

阅读全文 »

为什么会有 GC

本质上是内存资源的有限性,因此需要大家共享使用,手工申请,手动释放。

垃圾收集,不是 Java 语言的伴生产物。早在 1960 年,第一门开始使用内存动态分配和垃圾收集技术的 Lisp 语言诞生。

关于垃圾收集有三个经典问题:

  • 哪些内存需要回收?
  • 什么时候回收?
  • 如何回收?
阅读全文 »

JVM 命令行工具

工具 简介
java Java 应用的启动程序
javac JDK 内置的编译工具
javap 反编译 class 文件的工具
javadoc 根据 Java 代码和标准注释,自动生成相关的API说明文档
javah JNI 开发时, 根据 java 代码生成需要的 .h文件。
extcheck 检查某个 jar 文件和运行时扩展 jar 有没有版本冲突,很少使用
jdb Java Debugger ; 可以调试本地和远端程序, 属于 JPDA 中的一个 demo 实现, 供其他调试器参考。开发时很使用
jdeps 探测 class 或 jar 包需要的依赖
jar 打包工具,可以将文件和目录打包成为 .jar 文件;.jar 文件本质上就是 zip 文件, 只是后缀不同。使用时按顺序对应好选项和参数即可。
keytool 安全证书和密钥的管理工具; (支持生成、导入、导出等操作)
jarsigner JAR 文件签名和验证工具
policytool 实际上这是一款图形界面工具, 管理本机的 Java 安全策略
jps/jinfo 查看 java 进程
jstat 查看 JVM 内部 gc 相关信息
jmap 查看 heap 或类占用空间统计
jstack 查看线程信息
jcmd 执行 JVM 相关分析命令(整合命令)
jrunscript/jjs 执行 js 命令
阅读全文 »

《秒赞》林桂枝

1.你的样子里,有你走过的路,读过的书,看过的风景。

2.想当垃圾吃垃圾,想当辣椒吃辣椒,想当什么自己要想好吃什么。

  • 创建“好东西”文件夹,在里面放好的设计与照片、出色的演讲、有见地的文章、有趣的事物。
  • 准备一个“好东西”本子,随时记录有趣的对话和文字,补充新词汇,不断丰富自己的储备。
  • 将自己认为“有感觉”的词汇记下来,接着将这些词汇分给不同的人和不同的事物,想想这些词该给谁,与什么东西结合最有意思。
  • 读完一本书,写个简短的读书心得;看完一部电影,记录自己的感受。有时间多写,忙的话写几行字也可以。
  • 你记录的点点滴滴将会成为你个人的宝贵资产,你的缪斯女神,更是让你工作顺利、表现优秀的利器。

3.人能想象到的一切都是真实的。——毕加索

阅读全文 »

JVM 运行时数据区概述

内存是非常重要的系统资源,是硬盘和 CPU 的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM 内存布局规定了 Java 在运行过程中内存申请、分配、管理的策略,保证了 JVM 的高效稳定运行。不同的 JVM 对于内存的划分方式和管理机制存在着部分差异。结合 JVM 虚拟机规范,来讨论一下经典的 JVM 内存布局。

Java 虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。而另外一些则是与线程一一对应的,这些与线对应的数据区域会随着线程开始和结束而创建和销毁。

阅读全文 »

类加载子系统作用

  • 类加载子系统负责从文件系统或者网络中加载 Class 文件,Class 文件在文件开头有特定的文件标识(cafebabe)
  • ClassLoader 只负责 Class 文件的加载,至于它是否能够运行,则由 Execution Engine 决定
  • 加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区还存放运行时常量池信息,可能还包含字符串字面值和数字常量(这部分常量信息是 Class 文件中常量池部分的内存映射)
阅读全文 »

什么是字节码?

  • 我们平时所说的 Java 字节码,指的是用 Java 语言编译成的字节码。准确的说能在 JVM 平台上执行的字节码格式都是一样的。所以应该统称为 JVM 字节码。

  • 不同的编译器,可以编译出相同的字节码文件,字节码文件也可以在不同的 JVM 上运行。

  • Java 虚拟机与 Java 语言并没有必然的联系,它只与特定的二进制文件格式 .class 文件格式所关联,.class 文件中包含了 Java 虚拟机指令集(或者称为字节码、Bytecodes)和符号表,还有一些其他的辅助信息。

  • Java bytecode 由单字节(byte)的指令组成,理论上最多支持 256 个操作码(opcode)。 实际上 Java 只使用了200左右的操作码,还有一些操作码则保留给调试操作。详情见:

  • JVM 指令集对照表

阅读全文 »