
JVM
(次第花开)
记录为梦想而前行的过程。
展开
-
JVM中类的加载
JVM中类的加载 1、类的加载过程 1.1、加载 加载是指类加载器将类的class文件读入到内存中,并为之创建一个Class对象。 1.2、链接 类被加载之后,系统生成一个对应的Class对象,接着将会进入链接阶段,链接阶段负责把类的二进制数据合并到JRE中。链接阶段可以细分为下面三个阶段: 验证: 检验被加载的类是否有正确的内部结构,确保class文件的字节流中包含的信息符合当前虚拟机的要求,不会危害虚拟机的自身安全,主要包含四种验证:文件格式验证、元数据验证、字节码验证、符号引用验证,并和其他原创 2020-05-18 13:41:35 · 221 阅读 · 0 评论 -
浅谈对JVM的认识
浅谈对JVM的认识 JVM简介 JVM(Java Virtual Machine),俗称Java虚拟机。是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算功能来实现的,Java语言跨平台就是依赖于JVM实现。 内部结构 JVM内部主要由三部分构成: 类装载器系统 每一个Java虚拟机都有一个类加载器系统,负责加载程序中类和接口,并赋予唯一名称。 运行时数据区 主要包含: 方法区:当JVM的类装载器加载.class文件,并进行解析,把解析的类型信息放入方法区。 堆:虚拟机中只有一个原创 2020-05-17 10:39:03 · 233 阅读 · 0 评论 -
Synchronized实现原理及锁升级
Synchronized实现原理及锁升级 Synchronized是Java内置的机制,是JVM层面的,而Lock则是接口,JDK层面的。最初的Synchronized的性能效率比较差,但是随着版本的升级,Synchronized已经越来越强大。 修饰普通方法,使用类的实例加锁,进入方法前需要获取当前类的实例锁; 注意反编译后的内容,flags那一行多了ACC_SYNCHRONIZED标识,表...原创 2020-04-21 20:27:08 · 188 阅读 · 0 评论 -
JAVA运行时内存模型
JAVA运行时内存模型 对于部分Java程序员来说,Java内存分为堆和栈,这其实是非常粗略的一种划分,这里的堆对应内存模型中Java堆,栈对应内存模型中虚拟机栈,这是不全面的认识。实际上,运行时内存模型有五大区域,分为线程私有和线程共享两大类。其中线程私有的数据区包含程序计数器、虚拟机栈、本地方法栈,线程共享的数据区包含堆、方法区,注意在方法区中有一个常量池。 线程私有 程序计数器: 记录...原创 2020-04-17 22:54:12 · 369 阅读 · 0 评论 -
JVM的垃圾回收算法及垃圾收集器
JVM的垃圾回收算法及垃圾收集器 1、垃圾回收 程序的运行必然需要申请内存资源,无效的对象资源如果不及时处理,就会一直占用内存资源,最终将导致内存溢出。所以对内存资源的管理是很重要的。 Java垃圾回收让程序员更加专注代码的实现,而不用过多考虑内存释放的问题,所以Java有自动的垃圾回收机制,也就是我们通常说的GC。 除了Java语言,C#、Python等语言也有自动的垃圾回收机制。 2、常见的垃...原创 2019-11-04 21:56:18 · 183 阅读 · 0 评论 -
JVM之1.7于1.8内存区别
JVM之1.7于1.8内存区别 jvm的内存模型在1.7和1.8有较大区别。 1、jdk1.7的堆内存 Young 年轻代 Young区被划分为三个部分,Eden区和两个大小严格相同的Survivor区,其中,Survivor区间中,某一时刻只有其中一个是被使用的,另一个留做垃圾收集时复制对象用,在Eden区间变满的时候,GC就会将存活得的对象移到空闲的Survivor区间中,根据JVM的策...原创 2019-11-03 13:20:20 · 2360 阅读 · 0 评论 -
JVM参数及命令
JVM参数 1、jvm三种参数类型 标准参数 -help:输出此帮助消息。 -cp:目录和 zip/jar 文件的类搜索路径。 -version:输出产品版本并退出。 -D<名称>=<值>:设置系统属性。 -showversion:输出产品版本并继续。 -X参数(非标准参数) -Xint:解释模式,编译快 运行慢。 -Xcomp:编译模式,编译慢 运行快(一次编译...原创 2019-11-02 22:07:52 · 969 阅读 · 0 评论