随笔分类 - JVM
摘要:根据JVM参数开头可以区分参数类型,共三类:“-”、“-X”、“-XX”, 标准参数(-):所有的JVM实现都必须实现这些参数的功能,而且向后兼容; 例子:-verbose:class,-verbose:gc,-verbose:jni…… 非标准参数(-X):默认jvm实现这些参数的功能,但是并不保
阅读全文
摘要:https://www.cnblogs.com/mylpy/p/15315101.html https://www.jb51.net/article/165330.htm 一、Java程序从源文件创建到程序运行要经过两大步骤: 1、编译期:编译器把 .java 源代码文件编译成 .class 字节码
阅读全文
摘要:对象内存中可以分为三块区域:对象头(Header),实例数据(Instance Data)和对齐填充(Padding),以64位操作系统为例(未开启指针压缩的情况)Java对象布局如下图所示: Object obj=new Object()占用字节 这是网上很多人都会提到的一个问题,那么结合上面的J
阅读全文
摘要:https://mp.weixin.qq.com/s/y82t0a4dTBZwgY6MRnZDIw 创建对象的方式有4种:new 关键字、反射机制、Object 类的 clone 方法、反序列化。 针对 new 关键字的方式,来谈谈对象创建的过程,例如 Demo 类: // 创建Demo类的实例对象
阅读全文
摘要:visualVM 堆大小,类个数,实例个数,类加载器,gcroot
阅读全文
摘要:虚拟机遇到一条new指令时,首先会去常量池中查看能否定位到该类的符号引用,并且检查这个类是否有加载连接初始化过。如果没有,那么要先执行该类的加载过程,将类加载到虚拟机中。内存分配方式在类的加载通过之后,接下来就要给该类的实例对象分配内存空间了。对象的内存空间在类加载完之后就确定了,为类分配空间也就是
阅读全文
摘要:Serial收集器 串行收集器是最古老,最稳定以及效率高的收集器,可能会产生较长的停顿,只使用一个线程去回收。新生代、老年代使用串行回收;新生代复制算法、老年代标记-压缩;垃圾收集的过程中会Stop The World(服务暂停) 参数控制:-XX:+UseSerialGC 串行收集器 ParNew
阅读全文
摘要:https://kaiwu.lagou.com/course/courseInfo.htm?courseId=1#/detail/pc?id=5 ZGC 特点ZGC 是最新的 JDK1.11 版本中提供的高效垃圾回收算法,ZGC 针对大堆内存设计可以支持 TB 级别的堆,ZGC 非常高效,能够做到
阅读全文
摘要:「什么是逃逸分析?」逃逸分析(Escape Analysis),是一种可以有效减少Java 程序中同步负载和内存堆分配压力的跨函数全局数据流分析算法。通过逃逸分析,Java Hotspot编译器能够分析出一个新的对象的引用的使用范围,从而决定是否要将这个对象分配到堆上。逃逸分析是指分析指针动态范围的
阅读全文
摘要:https://blog.csdn.net/Hmj050117/article/details/115414951
阅读全文
摘要:https://www.bbsmax.com/A/QW5YvjLedm/
阅读全文
摘要:jvm之-XX:+UseCompressedOops作用 http://www.yayihouse.com/yayishuwu/chapter/1956 解决方法: new一个空对象在32为系统中占用内存大小是8byte(对象头,在堆中)+4byte(对象的引用地址,在栈中)=12byte; new
阅读全文
摘要:转 https://www.java123.vip/wp/ 备注:下图为JVM7的内存结构,JVM8的perm空间做了如下修改:Java7→Java8 Permanent→物理内存的Metaspace 后续讨论将基于JVM7的内存结构展开。 JVM为Java运行时环境,也就是Java程序运行时的数据
阅读全文
摘要:类的生命周期 加载、连接、初始化、使用和卸载 加载,查找并加载类的二进制数据,加载指的是将类的class文件读入到内存,并为之创建一个java.lang.Class对象,也就是说,当程序中使用任何类时,系统都会为之建立一个java.lang.Class对象。 连接,当类被加载之后,系统为之生成一个对
阅读全文
摘要:堆和栈的平衡 x86的机器上的 进程 最多可以使用 2048mb的内存, 该Java进程剩下的内存由, 方法区,程序计数器,虚拟机栈,本地方法栈 共同使用。 虚拟机栈使用的空间 = 2048- Xmx(最大堆容量)-MaxPermSize (最大方法区容量) - 本地方法栈 我们知道,一个线程对应一
阅读全文
摘要:JVM调优的常见命令工具包括: 1)jps命令用于查询正在运行的JVM进程, 2)jstat可以来查看垃圾回收的情况,特别是fullgc,如果发现fullgc比较频繁,那么就得进行调优了,实时显示本地或远程JVM进程中类装载、内存、垃圾收集、JIT编译等数据 3)jinfo用于查询当前运行这的JVM
阅读全文
摘要:ClassLoader的分类有哪些?加载顺序是什么?类加载的顺序又是什么? 答:ClassLoader分为4种:Jvm类加载器(BootstarpClassLoader),Jvm扩展类加载器(extClassLoader),系统类加载器(SystemClassLoader),自定义类加载器(AppC
阅读全文
摘要:程序计数器、虚拟机栈、本地方法栈3个区域随线程而生随线程而灭,这几个区域不需要过多考虑回收的问题,在方法结束或线程结束的时内存就跟着回收了。 垃圾回收主要关注的区域是java的堆和方法区。 引用计数算法 给对象中添加一个引用计数器,每当有一个地方引用它时计数器值就加1,当引用失效,计数器值就减1,计
阅读全文
摘要:JavaSE,Java平台标准版,为Java EE和Java ME提供了基础。 JDK:Java开发工具包,JDK是JRE的超集,包含JRE中的所有内容,以及开发程序所需的编译器和调试程序等工具。 JRE:Java SE运行时环境 ,提供库、Java虚拟机和其他组件来运行用Java编程语言编写的程序
阅读全文