升级Hexo
比如本次更新为7.3.0
查看最新hexo生成的依赖版本
在其他目录重新初始化hexo项目
1 | $ npm install hexo@latest |
查看test目录里面的package.json,比较里面的依赖版本,有没有大版本升级(比如从0.0.1升级到了2.0.0)就需要在老项目改一下前版本号
比如本次更新为7.3.0
在其他目录重新初始化hexo项目
1 | $ npm install hexo@latest |
查看test目录里面的package.json,比较里面的依赖版本,有没有大版本升级(比如从0.0.1升级到了2.0.0)就需要在老项目改一下前版本号
Java 语言,跨平台的(write once,run anywhere)
Java 虚拟机:跨语言的平台
Java 虚拟机不和包括 Java 在内的任何语言绑定,它只与”Class 文件”这种特定的二进制文件格式所关联。无论使用何种语言进行软件开发, 只要能将源文件编译为正确的 Class 文件,那么这种语言就可以在 Java 虚拟机上执行,可以说,统一而强大的 Class 文件结构,就是 Java 虚拟机的基石、桥梁。
通过阅读GC日志,我们可以了解Java虚拟机内存分配与回收策略。
内存分配与垃圾回收的参数列表
-XX:+PrintGC
:输出GC日志。类似:-verbose:gc-XX:+PrintGCDetails
:输出GC的详细日志-XX:+PrintGCTimestamps
:输出GC的时间戳(以基准时间的形式)-XX:+PrintGCDatestamps
:输出GC的时间戳(以日期的形式,如2013-05-04T21: 53: 59.234 +0800)-XX:+PrintHeapAtGC
:在进行GC的前后打印出堆的信息-Xloggc:…/logs/gc.log
:日志文件的输出路径截止JDK1.8,一共有7款不同的垃圾收集器。每一款的垃圾收集器都有不同的特点,在具体使用的时候,需要根据具体的情况选用不同的垃圾收集器。
垃圾收集器 | 分类 | 作用位置 | 使用算法 | 特点 | 适用场景 |
---|---|---|---|---|---|
Serial | 串行运行 | 作用于新生代 | 复制算法 | 响应速度优先 | 适用于单CPU环境下的client模式 |
ParNew | 并行运行 | 作用于新生代 | 复制算法 | 响应速度优先 | 多CPU环境Server模式下与CMS配合使用 |
Parallel | 并行运行 | 作用于新生代 | 复制算法 | 吞吐晕优先 | 适用于后台运算而不需要太多交互的场景 |
Serial Old | 串行运行 | 作用于老年代 | 标记-压缩算法 | 响应速度优先 | 适用于单CPU环境下的Client模式 |
Parallel old | 并行运行 | 作用于老年代 | 标记-压缩算法 | 吞吐量优先 | 适用于后台运算而不需要太多交互的场景 |
CMS | 并发运行 | 作用于老年代 | 标记-清除算法 | 响应速度优先 | 适用于互联网或B/S业务 |
G1 | 并发、并行 | 作用于新生代、老年代 | 标记-压缩算法、复制算法 | 响应速度优先 | 面向服务端应用 |
JVM启动时,G1先准备好Eden区,程序在运行过程中不断创建对象到Eden区,当Eden空间耗尽时,G1会启动一次年轻代垃圾回收过程。
年轻代回收只回收Eden区和Survivor区。
YGC时,首先G1停止应用程序的执行(Stop-The-World),G1创建回收集(Collection Set),回收集是指需要被回收的内存分段的集合,年轻代回收过程的回收集包含年轻代Eden区和Survivor区所有的内存分段。
JVM-058-垃圾回收器-G1回收器-分区Region详解
化整为零
使用G1收集器时,它将整个Java堆划分成约2048个大小相同的独立Region块,每个Region块大小根据堆空间的实际大小而定,整体被控制在1MB到32MB之间,且为2的N次幂,即1MB,2MB,4MB,8MB,16MB,32MB。可以通过 -XX:G1HeapRegionSize设定。所有的Region大小相同,且在JVM生命周期内不会被改变。
JVM-057-垃圾回收器-G1回收器-JVM参数设置与调优以及应用场景
这里列举主要常见的6个参数,其他参数可以参考官方文档:
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html