0%
Java 进阶 06 —— JVM 垃圾回收算法
Java 进阶 05 —— JVM 相关工具
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.人能想象到的一切都是真实的。——毕加索
Java 进阶 04 —— JVM 内存模型:堆和栈是什么?
Java 进阶 03 —— 类加载器和双亲委派到底是什么?
Java 进阶 02 —— 是时候了解一下 Java 字节码了
什么是字节码?
我们平时所说的 Java 字节码,指的是用 Java 语言编译成的字节码。准确的说能在 JVM 平台上执行的字节码格式都是一样的。所以应该统称为 JVM 字节码。
不同的编译器,可以编译出相同的字节码文件,字节码文件也可以在不同的 JVM 上运行。
Java 虚拟机与 Java 语言并没有必然的联系,它只与特定的二进制文件格式 .class 文件格式所关联,.class 文件中包含了 Java 虚拟机指令集(或者称为字节码、Bytecodes)和符号表,还有一些其他的辅助信息。
Java bytecode 由单字节(byte)的指令组成,理论上最多支持 256 个操作码(opcode)。 实际上 Java 只使用了200左右的操作码,还有一些操作码则保留给调试操作。详情见:
Java 进阶 01 —— 5 分钟回顾一下 Java 基础知识
Java 生态圈
Java 是目前应用最为广泛的软件开发平台之一。随着 Java 以及 Java 社区的不断壮大,Java 也早已不再是简简单单的一门计算机语言了,它更是一个平台、一种文化、一个社区。
- 作为一个平台:Java 虚拟机扮演着举足轻重的作用。
- Groovy、Scala、JRuby、Kotlin 等都是 Java 平台的一部分。
- 作为一种文化:Java 几乎成为了开源的代名词
- 第三方开源软件和框架,如,Tomcat、Struts、MyBatis、Spring 等
- 就连 JDK 和 JVM 自身也有不少开源的实现,如 OpenJDK、Harmony
- 作为一个社区,Java 拥有全世界最多的技术拥护者和开源社区的支持,有数不清的论坛和资料。从桌面应用软件、嵌入式开发到企业级应用、后台服务器、中间件,都可以看到 Java 的身影。其应用形式之复杂、参与人数之众也令人咋舌。
JDK 16 正式发布!
JDK 16 在 2021 年 3 月 16 日正式发布了,这次发布的主要功能有:
- JEP 338: Vector API (Incubator)
- JEP 347: Enable C++14 Language Features
- JEP 357: Migrate from Mercurial to Git
- JEP 369: Migrate to GitHub
- JEP 376: ZGC: Concurrent Thread-Stack Processing
- JEP 380: Unix-Domain Socket Channels
- JEP 386: Alpine Linux Port
- JEP 387: Elastic Metaspace
- JEP 388: Windows/AArch64 Port
- JEP 389: Foreign Linker API (Incubator)
- JEP 390: Warnings for Value-Based Classes
- JEP 392: Packaging Tool
- JEP 393: Foreign-Memory Access API (Third Incubator)
- JEP 394: Pattern Matching for instanceof
- JEP 395: Records
- JEP 396: Strongly Encapsulate JDK Internals by Default
- JEP 397: Sealed Classes (Second Preview)