![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java虚拟机
文章平均质量分 92
jvm
xlshi1996
业精于勤荒于嬉
展开
-
JVM高频
文章目录原创 2020-12-25 14:25:17 · 101 阅读 · 0 评论 -
字节码文件详解
前言我们都知道,Java程序最终是转换成class文件执行在虚拟机上的,那么class文件是个怎样的结构,虚拟机又是如何处理去执行class文件里面的内容呢,这篇文章带你深入理解Java字节码中的结构。1.Demo源码首先,编写一个简单的Java源码:package com.april.test;public class Demo { private int num = 1; public int add() { num = num + 2; r原创 2020-10-24 08:55:35 · 4893 阅读 · 2 评论 -
HashMap问题
Q0:HashMap是如何定位下标的?A:先获取Key,然后对Key进行hash,获取一个hash值,然后用hash值对HashMap的容量进行取余(实际上不是真的取余,而是使用按位与操作,原因参考Q6),最后得到下标。Q1:HashMap由什么组成?A:数组+单链表,jdk1.8以后又加了红黑树,当链表节点个数超过8个(m默认值)以后,开始使用红黑树,使用红黑树一个综合取优的选择,相对于其他数据结构,红黑树的查询和插入效率都比较高。而当红黑树的节点个数小于6个(默认值)以后,又开始使用链表。Q2:原创 2020-10-09 13:35:26 · 170 阅读 · 0 评论 -
JVM面试总结
Java内存区域说一下 JVM 的主要组成部分及其作用?JVM包含两个子系统和两个组件,两个子系统为Class loader(类装载)、Execution engine(执行引擎);两个组件为Runtime data area(运行时数据区)、Native Interface(本地接口)。Class loader(类装载):根据给定的全限定名类名(如:java.lang.Object)来装载class文件到Runtime data area中的method area。Execution engi转载 2020-10-08 16:28:45 · 77 阅读 · 0 评论 -
JVM调优-JProfiler
一.JProfiler是什么JProfiler是由ej-technologies GmbH公司开发的一款性能瓶颈分析工具(该公司还开发部署工具)。其特点:使用方便界面操作友好对被分析的应用影响小CPU,Thread,Memory分析功能尤其强大支持对jdbc,noSql, jsp, servlet, socket等进行分析支持多种模式(离线,在线)的分析跨平台 (图1)二.数据采集Q1. JProfiler既然是一款性能瓶颈分析工具,这些分析的相关数据来自于哪里?Q2. JPr转载 2020-10-08 09:39:48 · 353 阅读 · 0 评论 -
JDK1.8 JVM
一、JDK1.8 JVM运行时数据区域概览这里介绍的是JDK1.8 JVM运行时内存数据区域划分。1.8同1.7比,最大的差别就是:元数据区取代了永久代。元空间的本质和永久代类似,都是对JVM规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元数据空间并不在虚拟机中,而是使用本地内存。二、各区域介绍1. 程序计数器每个线程一块,指向当前线程正在执行的字节码代码的行号。如果当前线程执行的是native方法,则其值为null。2. Java虚拟机栈线程私有,每个线程对应一个Java虚..转载 2020-10-07 19:42:03 · 540 阅读 · 2 评论 -
破坏双重委派机制
Tomcat的类加载机制是违反了双亲委托原则的,对于一些未加载的非基础类(Object,String等),各个web应用自己的类加载器(WebAppClassLoader)会优先加载,加载不到时再交给commonClassLoader走双亲委托。对于JVM来说:*因此,按照这个过程可以想到,如果同样在CLASSPATH指定的目录中和自己工作目录中存放相同的class,会优先加载CLASSPATH目录中的文件。*1、既然 Tomcat 不遵循双亲委派机制,那么如果我自己定义一个恶意的HashMap,会转载 2020-10-07 16:18:47 · 105 阅读 · 0 评论 -
JVM的认识
什么是jvmJVM(Java Virtual Machine),俗称Java虚拟机。它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。运行流程java程序经过一次编译之后,将java代码编译为字节码也就是class文件,然后在不同的操作系统上依靠不同的java虚拟机进行解释,最后再转换为不同平台的机器码,最终得到执行。这样我们是不是可以推演,如果要在mac系统上运行,是不是只需要转载 2020-10-07 13:57:40 · 75 阅读 · 0 评论 -
JVM-本地方法
前言:JAVA中有两种方法:JAVA方法和本地方法JAVA方法是由JAVA编写的,编译成字节码,存储在class文件中本地方法是由其它语言编写的,编译成和处理器相关的机器代码本地方法保存在动态链接库中,即.dll(windows系统)文件中,格式是各个平台专有的JAVA方法是与平台无关的,但是本地方法不是。http://blog.sina.com.cn/s/blog_5b9b4abe01016zw0.html一. 什么是Native Method简单地讲,一个Native Method就是一转载 2020-10-07 10:51:01 · 295 阅读 · 0 评论 -
直接内存和堆外内存
直接内存和堆外内存定义堆内存:JVM虚拟机上运行时数据区的组成部分,所有类实例和数组的内存都从此处分配直接内存:NIO模块可以不经过JVM内存直接访问物理系内存的类-通过DirectBuffer,直接分配在物理内存中,不占用堆空间,不受最大堆内存的限制,仅受操作系统最大内存限制。应用直接内存在高并发应用场景被广泛使用,Netty,Flink, Hadoop注:仅用于学习交流...原创 2020-09-24 15:33:34 · 128 阅读 · 0 评论 -
搞懂JVM-Java内存分配
搞懂JVM-Java内存分配1.内存分配内存分配功能栈存放基本类型的数据和对象的引用地址堆存放对象和数组常量池存放在编译器被确定的基本类型和对象型的常量值(final)静态域存放在对象中用static定义的静态成员寄存器我们在程序中无法控制非RAM(随机存取存储器)存储硬盘等永久存储空间2.字符串的内存分配:字符串对象的引用都是存放在栈中的,如果是编译期就已经创建好的(直接用双引号定义的)就存储在常量池中,如果是在运行期(new出来的原创 2020-06-05 08:13:11 · 107 阅读 · 0 评论