
JVM-Hotspot
文章平均质量分 94
字节码文件被加载后验证、解析、存储、执行以及热点代码优化等内容学习。
bit-cafe
深入学习才能体会到知识带来的快了!
展开
-
new一个对象
JVM的学习分两个阶段即原理和源码学习、通过原理知识的学习我们能粗略的了解从java代码到字节码文件再到JVM运行产出的流程,之后你肯定会有一万个为什么,那时只能阅读源码来回答你的一万个为什么……上篇文章学习了JVM内存区域,了解了JVM各个内存区域存储的数据,其中堆内存用来存储创建的对象,那下面一起来了解一下对象创建相关内容以及HSDB查看堆内存在JVM内存中的分配区域。带着这些疑问开始new指令创建对象的学习……1、创建的对象包含什么?2、对象内存布局(通俗说对象的组成部...原创 2020-08-31 22:47:09 · 1769 阅读 · 0 评论 -
JVM内存区域
JVM的学习分两个阶段即原理和源码学习、通过原理知识的学习我们能粗略的了解从java代码到字节码文件再到JVM运行产出的流程,之后你肯定会有一万个为什么,那时只能阅读源码来回答你的一万个为什么……一、JVM内存区域、JVM内存模型1、计算机内存:计算机内存就是存储CPU计算时需要读取数据的一个区域。2、JVM内存区域:同理JVM内存区域也就是java程序运行时读取、存放相关数据的区域。3、JVM内存模型:在特定的操作协议下,对特定的内存或高速缓存进行读写访问的过程抽象。其实JVM内存区.原创 2020-07-26 18:42:16 · 1008 阅读 · 0 评论 -
Javassist-手写字节码文件
上篇文章我们学了jdk中动态代理类生成,其实整个过程分两步,第一步获取代理类字节码文件、第二步加载字节码文件并验证、解析生成Class对象。在整个过程中发现生成字节码文件过程是比价麻烦,如果你看过”javaSE虚拟机规范”这本书你也会发现书中大部分也是讲.class字节码文件格式的,所以如果不借助工具自己写字节码文件那还是比较难的。 其实javac编译器就是一个将我们写的.java文件转化为.class 字节码文件工具,但是我们没法使用javac进行动态的字节码文件编写,其实除了ja...原创 2020-06-21 19:07:25 · 1206 阅读 · 2 评论 -
动态代理类生成Hotspot VM干了什么
本来想着从头开始写JVM但是之前写了动态代理设计模式,而动态代理模式中又涉及到动态生成Class对象的过程,索性就先了解一下对象生成过程,在后续学习过程如果发现写的有问题在纠正和补充!一、动态代理类生成主流程1、类加载、代理类实现接口Class对象集合获取2、校验是否为为接口(java是单继承而动态生成的代理李继承了Proxy所以其他的只能是接口)3、判断接口是不是public的,如果不是public则要判断是否为同一个目录下的,如果不是同一目录下的则生成代理类结束4、生成代理类包名..原创 2020-06-21 18:55:09 · 652 阅读 · 0 评论 -
CPU、内存打满排查流程、JVMGC调优
This is my, my, my, beautiful day!一、问题确认 1、top 命令查看各个进程cpu、内存使用量top //每隔5秒显式所有进程的资源占用情况 top -d 2//每隔2秒显式所有进程的资源占用情况 top -c//每隔5秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名) top -p 12345 ...原创 2020-01-19 16:53:01 · 4210 阅读 · 1 评论 -
栈帧、局部变量表、操作数栈
1.定义 栈帧(stack frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。 每一个方法从调用开始到执行完成的过程,就对应着一个栈帧在虚拟机栈里面从入栈到出栈的过程。 对于执行引擎来说,活动线程中,只有栈顶的栈帧是有效的,称为当前栈帧,这转载 2017-01-01 22:20:39 · 901 阅读 · 0 评论 -
探秘Java虚拟机——内存管理与垃圾回收
本文主要是基于Sun JDK 1.6 Garbage Collector(作者:毕玄)的整理与总结,原文请读者在网上搜索。1、Java虚拟机运行时的数据区2、常用的内存区域调节参数-Xms:初始堆大小,默认为物理内存的1/64(-Xmx:最大堆大小,默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制-Xmn:新转载 2016-05-09 15:35:51 · 1127 阅读 · 0 评论 -
java中的String类常量池详解
从一个博客上看到的6个题,先看看吧,如果都会了,这部分的知识就掌握的不错啦!输出结果在代码注释后面:test1:package StringTest;public class test1 { /** * @param args */ public static void main(String[] args){ String转载 2016-04-22 08:53:33 · 1032 阅读 · 0 评论 -
java内存分配分析
java内存分配分析本文将由浅入深详细介绍Java内存分配的原理,以帮助新手更轻松的学习Java。这类文章网上有很多,但大多比较零碎。本文从认知过程角度出发,将带给读者一个系统的介绍。进入正题前首先要知道的是Java程序运行在JVM(Java Virtual Machine,Java虚拟机)上,可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关性,由此可见J转载 2013-09-02 16:40:46 · 26238 阅读 · 23 评论