- 博客(13)
- 收藏
- 关注
原创 jvm执行引擎
解释器:当Java虚拟机启动时会根据预定义的规范对字节码采用逐行解释的方式执行,将每条字节码文件中的内容“翻译”为对应平台的本地机器指令执行。JIT(Just In Time Compiler)编译器:就是虚拟机将源代码一次性直接编译成和本地机器平台相关的机器语言,但并不是马上执行。
2024-12-09 01:00:00
321
原创 jvm方法区基础二
不是虚拟机运行时数据区的一部分。直接内存是在java堆外,直接向系统申请的内存空间。来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存。访问直接内存的速度会优于堆,读写性能高。因此出于性能考虑,读写频繁的场合会考虑使用直接内存,java的NIO库允许java程序使用直接内存,用于数据缓冲区。
2024-12-08 13:00:00
985
原创 方法区基础一
尽管所有方法区在逻辑上属于堆的一部分。但Hotspot虚拟机有一个别名叫非堆,目的是和堆分开。方法区可以看作是一块独立于java堆的内存空间。方法区主要存放的是class,而堆中主要存放的是实例化的对象。
2024-12-08 01:00:00
415
原创 JAVA中TLAB和空间内存担保
从内存模型对Eden区域进行划分,JVM为每一个线程分配一个私有缓存区域,包含在Eden区域中。多线程同时分配内存时,通过TLAB可以避免一系列非线程安全问题,同时还能提升内存分配的吞吐量,因此我们将这种分配策略称之为快速分配策略。每个线程一个TLAB区域。当一个线程的TLAB存满,会使用公共内存空间。尽管不是所有对象实例都能够在TLAB中成功分配内存,但jvm会把TLAB作为内存分配的首选。可以设置是否开启TLAB。。可以设置TLAB的空间大小比例。
2024-12-07 23:00:00
784
原创 jvmGC分类
jvm调优的一个重要环节就是垃圾收集,我们要尽量避免垃圾回收,因为在垃圾回收的过程中,容易出现STW问题,而MajorGC和FULL GC出现STW的时间是Minor GC的10倍以上。Hotspot jvm实现回收区域又分为两大类型:部分收集和整堆收集(FULL GC)。整堆收集(FULL GC):收集整个java堆和方法区的垃圾收集。
2024-12-07 03:00:00
372
原创 jvm堆相关知识
堆是共享的,一个进程只有一个jvm实例,一个jvm实例只有一个运行时数据区,一个运行时数据区只有一个堆和方法区。java堆区用于存储java对象实例,那么堆的大小在jvm启动时就已经设定好了。MinorGC/YGC:垃圾回收的对象是eden和surivior区。Eden空间和两个survivor空间默认比例是:8:1:1。一旦超过-Xmx表示的最大内存,将会抛出OOM异常。2.java堆区进一步细分,可以划分为年轻代和老年代。进程包含多个线程,线程之间共享同一堆空间。设置新生代最大内存大小,但一般步改变。
2024-12-06 22:00:00
756
原创 jvm中栈结构详解
栈帧中的局部变量表中的槽位是可以重用的,如果一个局部变量过了其作用域,那么在其作用域之后申明新的局部变量变就很有可能会复用过期局部变量的槽位,从而达到节省资源的目的。早期绑定就是被调用的目标方法如果在编译期可知,且运行期保持不变时,即可将这个方法与所属的类型进行绑定,这样一来,由于明确了被调用的目标方法究竟是哪一个,因此也就。在方法执行过程中遇到异常,并且这个异常没有在方法内进行处理,也就是只要在本方法的异常表中没有搜索到匹配的异常处理器,就会导致方法退出,简称。如果被调用的方法在编译期无法被确定下来,
2024-12-06 06:00:00
1128
原创 jvm虚拟机栈
虚拟机栈,每个线程在创建时都会创建一个虚拟机栈,其内部保存一个个栈帧,对应一次次的java方法调用。. -xss 设置线程的最大栈空间。决定函数调用的最大深度。
2024-12-05 12:00:00
199
原创 jvm虚拟机自带加载器
启动类加载器(Bootstrap ClassLoader)拓展类加载器(Extension ClassLoader)系统类加载器(AppClassLoader)什么时候需要自定义加载器?
2024-12-05 01:00:00
221
原创 JAVA NIO零拷贝实现
JDK8及之前使用替身缓冲区,在使用HeadBuffer读写数据时,为了避免缓冲区数据因为GC而丢失,NIO会先把HeadBuffer内部的数据拷贝到一个临时DirectBuffer中的本地内存,通过Unsafe类的copyMemory()调用,类似。在使用 MappedByteBuffer 读写文件时,操作系统会将文件的数据读入内核缓冲区,在进程中生成一个内存映射区域,然后将该内存映射区域映射到进程的虚拟内存空间中,从而使进程可以像访问内存一样访问文件。URI是一个通用的标识符,用于表示任何类型的资源。
2024-12-03 17:59:50
1097
2
原创 Drools规则引擎基础
Drools提供了一些方法可以用来操作工作内存中的数据,**操作完成后规则引擎会重新进行相关规则的匹配,**原来没有匹配成功的规则在我们修改数据完成后有可能就会匹配成功了。no-loop的作用是限制因为modify等更新操作导致重复执行,但是有一个限定条件,是当前规则中进行更新导致当前规则重复执行,而不能限制其他规则更新相同的fact对象。的方法找出所有匹配各个模式的对象和规则。RHS部分是规则体的重要组成部分,当LHS部分的条件匹配成功,对应的RHS部分就会触发执行,一般在RHS中进行业务处理。
2024-12-03 17:55:11
1227
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅