JVM
文章平均质量分 89
Archie_java
求知若饥,虚心若愚(stay hungry,stay foolish)
好记性不如烂笔头
展开
-
一篇文章掌握整个JVM,JVM超详细解析!!!
程序在运行过程中,会产生大量的内存垃圾(一些没有引用指向的内存对象都属于内存垃圾,因为这些对象已经无法访问,程序用不了它们了,对程序而言它们已经死亡),为了确保程序运行时的性能,java虚拟机在程序运行的过程中不断地进行自动的垃圾回收(GC)。GC是不定时去堆内存中清理不可达对象。不可达的对象并不会马上就会直接回收, 垃圾收集器在一个Java程序中的执行是自动的,不能强制执行清楚那个对象,即使程序员能明确地判断出有一块内存已经无用了,是应该回收的,程序员也不能强制垃圾收集器回收该内存块。原创 2023-08-20 23:48:35 · 232 阅读 · 0 评论 -
JVM垃圾回收机制 (垃圾判断,垃圾回收算法,垃圾回收器,五种引用)
前面我们学习了三种垃圾回收算法,但实际上 JVM 虚拟机不会单独采用某一种算法,而是结合三种算法协同工作,具体的实现称为:分代垃圾回收。把整个堆内存分为两块:新生代、老年代。而新生代又分为3个部分,即:伊甸园、幸存区 From、幸存区 To。那么问题来了,为什么要做区域划分呢?主要是因为 Java 中有的对象需要长期使用,长时间使用的对象,就把其放到老年代中,而那些用完了就可以回收掉的对象,就可以放在新生代。原创 2023-02-26 23:38:16 · 489 阅读 · 0 评论 -
JVM——System.gc、内存溢出、内存泄漏、STW、安全点、安全区域、强软弱虚引用
①. 在默认情况下,通过System.gc( )或者Runtime.getRuntime( ).gc( )的调用,会显式触发Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。②. 然而System.gc()调用附带一个免责声明,无法保证对垃圾收集器的调用(无法保证马上触发GC)。(不保证一定会发生垃圾收集,只是给jvm发出提示)③. JVM实现者可以通过system.gc( )调用来决定JVM的GC行为。而一般情况下,垃圾回收应该是自动进行的,无须手动触发,否则就太过于麻烦了原创 2022-06-03 17:00:15 · 586 阅读 · 0 评论 -
Minor GC、Major GC和Full GC之间的区别
概念:● 新生代 GC(Minor GC):从年轻代空间(包括 Eden 和 Survivor 区域)回收内存被称为 Minor GC,因为 Java 对象大多都具备朝生夕灭的特性,所以 Minor GC 非常频繁,一般回收速度也比较快。这一定义既清晰又易于理解。但是,当发生Minor GC事件的时候,有一些有趣的地方需要注意到:当 JVM 无法为一个新的对象分配空间时会触发 Minor GC,比如当 Eden 区满了。所以分配率越高,越频繁执行 Minor GC。内存池被填满的时候,其中的内容全部原创 2022-02-20 16:39:20 · 312 阅读 · 0 评论 -
关于Java成员变量、局部变量、方法,在JVM的内存空间分配
1、变量类型2、类的结构下面是一般类的结构//类体=属性+状态(即:类体=变量+方法)public class 类名{ //类名最好首字母大写的英文 String name; //在方法体外,所以是成员变量 //下面是一个main方法(程序入口的主方法) public static void main(String[] args){ int i; //在main方法体内,所以是局部变量 } }3、类的编译运行时JVM内存的变化JVM(Java 虚拟机)主要包括三个内存空间。分原创 2022-02-17 21:02:44 · 2066 阅读 · 0 评论 -
方法区元空间实现之jdk7和8字符串常量池、运行时常量池、静态变量到底在哪?
方法区(落地实现jdk7永久代,jdk8元空间),元空间并不在虚拟机中,而是使用本地内存,它和堆在逻辑上是连续的,但在物理上是不连续的,所以也叫非堆。1、此区域是线程共享的。储存已加载的类型信息、常量、静态变量、即时编译器编译后的代码等数据;2、常量池:编译器生成的各种字面量和符号引用;3、关于字符串常量池和运行时常量池的位置说明:JDK版本方法区实现变化jdk1.6永久代字符串常量池、运行时常量池、静态变量都是在永久代中jdk1.7永久代字符串常量池和静态变量被原创 2022-02-17 20:55:49 · 1030 阅读 · 0 评论 -
JVM中的五大内存区域划分详解
一、快速扫盲1. JVM是什么JVM是Java Virtual Machine的缩写,即咱们经常提到的Java虚拟机。虚拟机是一种抽象化的计算机,有着自己完善的硬件架构,如处理器、堆栈等,具体有什么咱们不做了解。目前我们只需要知道想要运行Java文件,必须先通过一个叫javac的编译器,将代码编译成class文件,然后通过JVM把class文件解释成各个平台可以识别的机器码,最终实现跨平台运行代码。2. JDK、JRE、JVM之间的关系JDK:全称为Java Development Kit,汉语为原创 2022-02-16 23:10:22 · 7288 阅读 · 1 评论 -
JVM详解
JVM探究请你谈谈对JVM的理解? java8虚拟机和之前的变化更新什么是OOM(内存溢出)? 什么是栈溢出(stackOverFlowError)? 怎么分析?JVM常用的调优参数有哪些?内存快照如何抓取? 怎么分析Domp文件 ? 知道吗?谈谈JVM中,类加载器你的认识?1.jvm的位置jvm运行在操作系统之上,java程序运行在jvm上,jvm用C写的jre包含jvm2.jvm的体系结构方法区属于一个特殊的堆,属于堆里的一块。jvm调优大部分是在调堆。3.类加载器作原创 2022-02-13 23:03:46 · 1297 阅读 · 0 评论 -
JVM经典五十问
引言1.什么是JVM?JVM——Java虚拟机,它是Java实现平台无关性的基石。Java程序运行的时候,编译器将Java文件编译成平台无关的Java字节码文件(.class),接下来对应平台JVM对字节码文件进行解释,翻译成对应平台匹配的机器指令并运行。同时JVM也是一个跨语言的平台,和语言无关,只和class的文件格式关联,任何语言,只要能翻译成符合规范的字节码文件,都能被JVM运行。内存管理2.能说一下JVM的内存区域吗?JVM内存区域最粗略的划分可以分为堆和栈,当然,按照虚拟机规范转载 2022-01-03 11:16:35 · 371 阅读 · 0 评论