![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java虚拟机
文章平均质量分 91
记录Java虚拟机相关知识
基础不牢,地动山摇...
这个作者很懒,什么都没留下…
展开
-
JVM_02 内存区域(堆、方法区、直接内存)
堆方法区原创 2021-08-15 18:21:16 · 310 阅读 · 0 评论 -
synchronized关键字及wait()/notify()/notifyAll()详解
概念JDK官网中对synchronized关键字有如下定义,synchronized关键字可以实现一个简单的策略来防止线程干扰和内存一致性错误,如果一个对象对多线程是可见的,那么对该对象的所有读或者写都将通过同步的方式来进行。具体表现如下:synchronized关键字提供了一种锁机制,能够确保共享变量的互斥访问,从而防止数据不一致问题的出现。 synchronized关键字包括monitor enter和monitor exit两个JVM指令,它能够保证在任何时候任何线程执行到monitor原创 2021-07-29 22:06:41 · 1468 阅读 · 0 评论 -
JVM_01 内存区域(程序计数器、虚拟机栈、本地方法栈)
程序计数器虚拟机栈本地方法栈原创 2021-08-15 10:28:17 · 119 阅读 · 0 评论 -
Class类文件结构
类文件结构JVM 的“无关性”参考地址:https://github.com/doocs/jvm/blob/master/docs/07-class-structure.md谈论 JVM 的无关性,主要有以下两个:平台无关性:任何操作系统都能运行 Java 代码 语言无关性: JVM 能运行除 Java 以外的其他代码Java 源代码首先需要使用 Javac 编译器编译成 .c...原创 2020-02-25 12:26:54 · 72 阅读 · 0 评论 -
虚拟机性能监控及调优分析
jps[options][hostid]原创 2020-02-25 09:17:48 · 1324 阅读 · 0 评论 -
内存分配与回收策略
内存分配与回收策略转自:https://github.com/doocs/jvm/blob/master/docs/05-memory-allocation-gc.md对象的内存分配,就是在堆上分配(也可能经过 JIT 编译后被拆散为标量类型并间接在栈上分配),对象主要分配在新生代的 Eden 区上,少数情况下可能直接分配在老年代,分配规则不固定,取决于当前使用的垃圾收集器组合以及相关的参...原创 2021-01-05 12:31:10 · 60 阅读 · 0 评论 -
HotSpot 垃圾收集器
目录新生代垃圾收集器Serial 垃圾收集器(单线程)ParNew 垃圾收集器(多线程)Parallel Scavenge 垃圾收集器(多线程)老年代垃圾收集器Serial Old 垃圾收集器(单线程)Parallel Old 垃圾收集器(多线程)CMS 垃圾收集器G1 通用垃圾收集器转自:https://github.com/doocs/jvm/bl...原创 2020-02-20 13:47:03 · 102 阅读 · 0 评论 -
JVM垃圾收集器与内存分配策略
目录概述判断对象是否存活引用计数法可达性算法引用的各种类型强引用(Strong Reference)软引用(Soft Reference)弱引用(Weak Reference)虚引用(Phantom Reference)生存还是死亡?方法区的内存回收判定废弃常量判定无用的类垃圾收集算法标记-清除算法复制算法(新生代)标记-整...原创 2020-02-20 13:51:56 · 84 阅读 · 0 评论 -
Java的永久代和元空间及各种常量池
转载地址:https://www.cnblogs.com/jwcz/p/11772143.html永久代Java 的内存中有一块称之为方法区的部分,在 JDK8 之前, Hotspot 虚拟机中的实现方式为永久代(Permanent Generation),别的JVM都没有这个东西。在过去(当自定义类加载器使用不普遍的时候),类几乎是“静态的”并且很少被卸载和回收,因此类也可以被看成“...原创 2020-04-24 11:03:21 · 1615 阅读 · 2 评论 -
JVM中的OOM异常
Java堆溢出Java堆中存储的是实例对象,只要不停的创建对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清楚这些对象,随着对象数量的增加,超过堆的最大容量就会产生内存溢出异常。 虚拟机参数为:-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError//-Xms20m -Xmx20m -XX:+HeapDumpO...原创 2020-02-18 23:19:50 · 554 阅读 · 0 评论 -
Java虚拟机运行时区域划分
Java虚拟机运行时区域划分 Java虚拟机在执行java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,这些数据区域有各自的用途以及创建时间和销毁时间,有的区域随着虚拟机进程的启动而一直存在,有些区域则依赖用户线程的启动和结束而建立和销毁,Java虚拟机所管理的内存包括以下几个运行时数据区域,如图所示。1.程序计数器 程序计数器是一块很小的内...原创 2020-02-18 08:54:59 · 175 阅读 · 0 评论 -
Java虚拟机对象创建、布局及访问
对象的创建 在语言层面上,创建对象(复制、反序列化)除外,仅仅是一个new 关键字的操作,而当虚拟机遇到一个字节码new 指令时,首先将去检查这个指定的参数是否能在常量池中定位到一个类的符号引用,并检查这个符号引用代表的类是否已被加载,解析和初始化过,如果没有,那必须先执行相应的类加载过程。 1.在类检查通过后,接下来虚拟机将为新生对象分配内存。对象所需的内存在...原创 2020-02-18 18:13:27 · 146 阅读 · 0 评论