posted @ 2025-06-28 11:48 草妖 阅读(14) 评论(0) 推荐(0)
摘要:
一、线程的实现: 实现线程主要有三种方式:使用内核线程实现(1:1实现),使用用户线程实现(1:N实现), 使用用户线程加轻量级进程混合实现(N:M实现)。 1、内核线程实现: 使用内核线程实现的方式也被称为1:1实现。内核线程(Kernel-Level Thread,KLT)就是直接由操作系统内核 阅读全文
摘要:
主要目的: 定义程序中各种变量的访问规则,即关注在虚拟机中把变量值存储到内存和从内存中取出变量值这样的底层细节。此处的变量(Variables)与Java编程中所说的变量有所区别,它包括了实例字段、静态字段和构成数组对象的元素,但是不包括局部变量与方法参数,因为后者是线程私有的,不会被共享,自然就不 阅读全文
posted @ 2025-06-21 14:22 草妖 阅读(3) 评论(0) 推荐(0)
摘要:
客户端编译器: 对于客户端编译器来说,它是一个相对简单快速的三段式编译器,主要的关注点在于局部性的优化,而放弃了许多耗时较长的全局优化手段。 在第一个阶段,一个平台独立的前端将字节码构造成一种高级中间代码表示(High-Level Intermediate Representation,HIR,即与 阅读全文
posted @ 2025-06-19 16:34 草妖 阅读(5) 评论(0) 推荐(0)
摘要:
从Javac代码的总体结构来看,编译过程大致可以分为1个准备过程和3个处理过程,它们分别如下 所示。 1)准备过程:初始化插入式注解处理器。 2)解析与填充符号表过程,包括: 词法、语法分析。将源代码的字符流转变为标记集合,构造出抽象语法树。 填充符号表。产生符号地址和符号信息。 3)插入式注解处理 阅读全文
posted @ 2025-06-18 16:43 草妖 阅读(4) 评论(0) 推荐(0)
摘要:
JVM高级特性与最佳实践(第3版)--虚拟机类加载机制 - 闪电龟龟 - 博客园 局部变量表(Local Variables Table)是一组变量值的存储空间,用于存放方法参数和方法内部定义 的局部变量。在Java程序被编译为Class文件时,就在方法的Code属性的max_locals数据项中确 阅读全文
posted @ 2025-06-17 10:22 草妖 阅读(4) 评论(0) 推荐(0)
摘要:
定义: Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制。 生命周期: 一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将会经历加载(Loading)、验证( 阅读全文
posted @ 2025-06-13 14:47 草妖 阅读(5) 评论(0) 推荐(0)
摘要:
目前,发现内存溢出在实际应用中常见的有这么两种情况: 一、代码中存在while等循环,导致内存溢出。 二、在后台代码中,部分接口报出内存溢出,但是部分接口正常。 第一种情况解决方案: 第一种情况可以查看代码中的报错日志,一般可以解决,如果实在没有报错,可以按照下面步骤进行排查: 步骤一:通过task 阅读全文
posted @ 2025-06-09 11:05 草妖 阅读(11) 评论(0) 推荐(0)
摘要:
创建普通对象和线程的区别:(详情请跳转(更加详细,本文仅作笔记摘抄):Java并发常见面试题总结 | Java学习&面试指南-程序员大彬 (topjavaer.cn)) new Object()过程如下: 1、JVM分配一块内存 M;2、在内存 M 上初始化该对象;3、将内存 M 的地址赋值给引用变 阅读全文
posted @ 2025-05-26 15:14 草妖 阅读(4) 评论(0) 推荐(0)
摘要:
-XX:InitialHeapSize:堆内存初始值(内存单位:默认(byte)、K(kb)、M(mb)、G(gb),后续内存单位不再累述);-XX:MaxHeapSize:堆内存最大值;-XX:+PrintCommandLineFlags :打印虚拟机的显示和隐藏参数;参照:https://zhu 阅读全文
posted @ 2025-04-19 14:45 草妖 阅读(13) 评论(0) 推荐(0)