Java 学习笔记之 JVM初识

Posted AK47Sonic

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 学习笔记之 JVM初识相关的知识,希望对你有一定的参考价值。

JVM初识:

 

java只是启动JVM的命令。JVM真实位置: C:\\Program Files\\Java\\jdk1.8.0_121\\jre\\bin\\server\\jvm.dll

1. 第一行JDK版本

2. 第二行JRE版本

3. 第三行JVM版本

 

1. 混合模式:速度最快(默认)

2. 解释模式:解释运行

3. 编译模式:编译优化运行

 

  • 在HostSpot中,方法区在Perm永久代。
  • Heap包括Young新生代和Tenured年老代,不包括Perm。
  • 一个java线程启动一个stack,一个stack默认1024K。所以开很多线程可能会导致StackOverFlow。
  • 本地方法栈通常用来调用C语言。
  • 程序计数器保存的是线程执行到哪段代码的位置。
  • 方法区和Heap是线程共享区域,其他块属于线程独享区域。

会OOM的区域:

  • Perm会OOM
  • Heap会OOM
  • Stack会OOM(概率很低)和StackOverFlow
  • Direct Memory会OOM

 

  • 新生代使用的垃圾回收算法是复制算法,垃圾回收GC叫Minor GC。Eden区满了,就进行Minor GC,把存活的对象复制到Survivor1,Survivor1满之后,把垃圾又复制到Survivor2,如果Survivor都满了,就直接进入Tenured年老代。新生代和年老代垃圾回收的速度比大概是1:10. 年老代的垃圾回收叫Major GC。Full GC指的是JVM内的所有对象进行逐一排查,把垃圾删除。10g堆内存,可能需要5分钟Full GC。
  • HeapDumpOnOurOfMemoryError可以dump出OOM日志,说明问题出在Heap和Perm。没有日志,说明可能在Direct Memory或Stack,不过Stack一般不OOM。
  • Direct Memory直接使用操作系统物理内存。

 

以上是关于Java 学习笔记之 JVM初识的主要内容,如果未能解决你的问题,请参考以下文章

B站学习笔记之初探JVM学习笔记

java之JVM介绍(学习笔记入门)

[JVM] 螺丝刀学习笔记之 —— 重学JVM概览

[ JVM ] 螺丝刀学习笔记之 —— 重学JVM概览

[JVM] 螺丝刀学习笔记之 —— 重学JVM概览

学习笔记JVM之内存模型