![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM系列
文章平均质量分 92
包括加载机制、、内存模型、对象创建与内存分配、JVM的操作指令、垃圾收集器(CMS G1 ZGC)、常用命令、调优工具、等
王中王101
学如逆水行舟,不进则退。
展开
-
6、JVM调优工具详解及调优实战
前置启动程序事先启动一个web应用程序,用jps查看其进程id,接着用各种jdk自带命令优化应用Jmap此命令可以用来查看内存信息,实例个数以及占用内存大小jmap -histo 14660 #查看历史生成的实例jmap -histo:live 14660 #查看当前存活的实例,执行过程中可能会触发一次full gc打开log.txt,文件内容如下:num:序号 instances:实例数量 bytes:占用空间大小 class name:类名称,[C ..原创 2021-07-02 17:59:41 · 201 阅读 · 0 评论 -
5、垃圾收集器G1&ZGC详解
G1收集器(-XX:+UseG1GC)G1 (Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器. 以极高概率满足GC停顿时间要求的同时,还具备高吞吐量性能特征.G1将Java堆划分为多个大小相等的独立区域(Region),JVM目标是不超过2048个Region(JVM源码里TARGET_REGION_NUMBER 定义),实际可以超过该值,但是不推荐。一般Region大小等于堆大小除以2048,比如堆大小为4096M,则Region大小原创 2021-07-02 17:55:36 · 252 阅读 · 0 评论 -
3、JVM对象创建与内存分配机制深度剖析
对象的创建对象创建的主要流程:1.类加载检查虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。 new指令对应到语言层面上讲是,new关键词、对象克隆、对象序列化等。2.分配内存在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需内存的大小在类 加载完成后便可完全确定,为对象分配空间的任务等同于把 一块确定大小的内存从Jav.原创 2021-07-01 18:22:14 · 190 阅读 · 0 评论 -
2、JVM内存模型深度剖析与优化
JDK体系结构Java语言的跨平台特性JVM整体结构及内存模型线程栈,执行一个线程一个方法就会把方法的局部变量、操作数栈、动态链接、方法出口 放到线程栈中。每个方法都有一个独立的栈帧内存空间。javap -c (-v 常量池) code的编号就是程序计数器的数字。距离步骤见jvm操作指令补充一个问题:在minor gc过程中对象挪动后,引用如何修改?对象在堆内部挪动的过程其实是复制,原有区域对象还在,一般不直接清理,JVM内部清理过程只是将对象分配指针移动原创 2021-07-01 18:17:48 · 164 阅读 · 0 评论 -
1、jdk源码分析类加载机制,tomcat双亲委派
Java Development Kit是提供给Java开发人员使用的,其中包含了Java的开发工具,也包括了JRE。所以安装了JDK,就无需再单独安装JRE了。其中的开发工具:编译工具(javac.exe),打包工具(jar.exe)等Java源代码---->编译器---->jvm可执行的Java字节码(即虚拟指令)---->jvm---->jvm中解释器----->机器可执行的二进制机器码---->程序运行。类加载运行全过程当.原创 2021-07-01 18:15:13 · 278 阅读 · 0 评论