摘要:1. 需求分析 大促在即,拥有亿级流量的电商平台开发了一个订单系统,我们应该如何来预估其并发量?如何根据并发量来合理配置JVM参数呢? 假设,现在有一个场景,一个电商平台,比如京东,需要承担每天上亿的流量。现在开发了一个订单系统,那么这个订单系统每秒的并发量是多少呢?我们应该如何分配其内存空间呢?先 阅读全文
摘要:一、对象的加载过程 之前研究过类的加载过程。具体详情可查看文章:https://www.cnblogs.com/ITPower/p/15356099.html 那么,当一个对象被new的时候,是如何加载的呢?有哪些步骤,如何分配内存空间的呢? 1.1 对象创建的主要流程 还是这段代码为例说明: pu 阅读全文
摘要:通常我们都知道在堆空间新生代Eden区满了,会触发minor GC, 在老年代满了会触发full GC, 触发full GC会导致Stop The World, 那你们知道还有一个区域满了一会触发Full GC么?而且这个区域满了会直接影响我们的开发效率。 一、方法区参数调优 我们可以对运行时数据区 阅读全文
摘要:一. 堆和GC介绍 1.java堆的特点 《深入理解java虚拟机》是怎么描述java堆的 Java堆(Java Heap)是java虚拟机所管理的内存中最大的一块 java堆被所有线程共享的一块内存区域 虚拟机启动时创建java堆 java堆的唯一目的就是存放对象实例。 java堆是垃圾收集器管理 阅读全文
摘要:一. java结构体系 Description of Java Conceptual Diagram(java结构) 我们经常说到JVM调优,JVM和JDK到底什么关系,大家知道么?这是java基础。 这幅图很重要,一定要了解其结构。这是jdk的结构图。从结构上可以看出java结构体系, JDK主要 阅读全文
摘要:了解了类加载器的双亲委派机制, 也知道了双亲委派机制的原理,接下来就是检验我们学习是否扎实了,来自定义一个类加载器 一. 回顾类加载器的原理 还是这张图,类加载器的入口是c++调用java代码创建了JVM启动器,其中的一个启动器是sun.misc.Launcher启动器。这个启动器启动并加载的App 阅读全文
摘要:手把手叫你写类加载器。 了解了类加载器的双亲委派机制, 也知道了双亲委派机制的原理,接下来就是检验我们学习是否扎实了,来自定义一个类加载器 一. 回顾类加载器的原理 还是这张图,类加载器的入口是c++调用java代码创建了JVM启动器,其中的一个启动器是sun.misc.Launcher启动器。这个 阅读全文
摘要:写在前面的话:为什么要研究类加载的过程?为什么要研究双亲委派机制? 研究类加载的过程就是要知道类加载的时候使用了双亲委派机制。但仅仅知道双亲委派机制不是目的,目的是要了解为什么要使用双亲委派机制,他的原理是什么?知道双亲委派机制的逻辑思想,然后这个思想是否可以被我们借鉴,为我所用。这才是学习知识的目 阅读全文
摘要:运行环境: 下面说明一下我的运行环境。我是在mac上操作的. 先找到mac的java地址. 从~/.bash_profile中可以看到 java的home目录是: /Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home 一. 阅读全文
摘要:我们可以对运行时数据区的内存进行参数设置. 这是jvm调优的重点. 参数的变化将影响到整体效率 核心参数设置如下: java -Xms2048M -Xmx1024M -Xss512k -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -jar micr 阅读全文
2.2 堆在整个jvm内存中的运行流程以及jvisualvm工具的使用
摘要:一. 堆和GC介绍 java堆的特点《深入理解java虚拟机》是怎么描述java堆的 Java堆(Java Heap)是java虚拟机所管理的内存中最大的一块 java堆被所有线程共享的一块内存区域 虚拟机启动时创建java堆 java堆的唯一目的就是存放对象实例。 java堆是垃圾收集器管理的主要 阅读全文
摘要:栈和局部变量操作 将常量压入栈的指令 aconst_null 将null对象引用压入栈 iconst_m1 将int类型常量-1压入栈 iconst_0 将int类型常量0压入栈 iconst_1 将int类型常量1压入 操作数栈 iconst_2 将int类型常量2压入栈 iconst_3 将in 阅读全文
摘要:1. java结构体系 Description of Java Conceptual Diagram(java结构) 以上就是java结构体系, 主要由两部分构成, 第一部分是java 工具(Tools&Tool APIs), 比如java命令, javac, javap命令. 第二部分是: JRE 阅读全文
摘要:一. tomcat是如何打破双亲委派机制的? 首先, 来举个例子, 通常,一个tomcat要加载几个应用程序呢? 当然是n多个应用程序, 加入我们使用的都是spring的框架, 那我们能保证所有的应用程序都是用spring4 或者spring5 么? 不可能, 他可能既有spring4的项目, 又有 阅读全文
摘要:什么是打破双亲委派机制呢? 那么这里第一步, 我们需要知道什么是双亲委派机制? 前面已经说了什么是双亲委派机制了, 那打破是怎么回事呢? 比如, 我现在有一个自定义类加载器, 加载的是~/com/lxl/jvm/User1.class类, 而在应用程序的target目录下也有一个com/lxl/jv 阅读全文
摘要:前面说了类加载器的双亲委派机制, 也知道了一个类是如何被类加载器加载进来的. 接下来. 我们来看一看如何自定义类加载器 一. 自定义类加载器 对于类加载器, 我们知道他的重点是loadClass(…)方法, 里面的双亲委派机制也是在loadClass方法里面实现的. loadClass方法里面实 阅读全文
摘要:1. 类加载的过程 1.1 类加载器初始化的过程 1.2 类加载的过程 1.3 类的懒加载 2. jvm核心类加载器 参考博客: https://www.cnblogs.com/ITPower/p/13197220.html 一. 双亲委派机制 1.1 什么是双亲委派机制 我们先来看一个案例: pa 阅读全文
摘要:目录 前提: 运行环境 1. 类加载的过程 1.1 类加载器初始化的过程 1.2 类加载的过程 1.3 类的懒加载 2. jvm核心类加载器 3. 双亲委派机制 4. 自定义类加载器 5. tomcat类加载机制 运行环境: 我是在mac上操作的. 先找到mac的java地址. 从~/.bash_p 阅读全文
摘要:参考文章:
a. https://blog.youkuaiyun.com/manageer/article/details/72812149
b.https://blog.youkuaiyun.com/lizhengjava/article/details/60138890
c.https://www.cnblogs.com 阅读全文
摘要:http://www.importnew.com/14630.htmljava 堆的特点《深入理解java虚拟机》是什么描述java堆的 Java堆(Java Heap)是java虚拟机所管理的内存中最大的一块 java堆被所有线程共享的一块内存区域 虚拟机启动时创建java堆 java堆的唯一目的就 阅读全文