JVM学习笔记

CST微波工作室端口设置保姆级教程:从波导端口到离散端口,手把手教你搞定S参数仿真 本文提供CST微波工作室端口设置的详细教程,涵盖波导端口和离散端口的选择与配置,助力工程师精准完成S参数仿真。通过微带线滤波器案例,详解端口尺寸、阻抗设置及常见问题排查,提升仿真效率与准确性。 阅读详情

JVM

JDK, JRE , JVM:

JDK(Java Development Kit),包括了Java运行环境JRE,一堆Java工具(编译器javac/java/jdb等)和Java基础的类库(即Java API 和java运行时基本类库rt.jar(runtime jar) 。

其中rt.jar包含所有核心Java 运行环境的已编译calss文件,其中包含引导类(bootstrap classes,即来自Core Java API的所有类)。

JRE(Java Runtime Envirnment)又包含JVM(Java Virtual Machine)java虚拟机。

光有JVM还不能完成.class字节码文件的执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。 (jre里有运行.class的java.exe)。 所以JVM+lib=JRE。

总体来说就是,我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。

JVM内部架构:(runtime data area)(jdk8 Hotspot版)

在这里插入图片描述

runtime data area按属性可以分为以下两类:

  • 一类属于进程(生命周期与进程相同,线程共享),
  • 另一类属于线程(生命周期与线程相同,线程私有)。

属于进程的有堆(Heap)和方法区(Method Area)。

属于线程的有程序计数寄存器(Program Counter Register),Java栈(Java Virtual Machine Stack)以及本地方法栈(Native Method Stack)。

需要注意的是,堆中并不全是线程共享,本地线程分配缓存(简称TLAB 全写Thread Local Allocation Buffer)是线程私有的,只不过在默认情况下占堆的1%。

JVM栈:

栈解决程序的运行问题,描述的是 Java 方法执行的内存模型。每个方法在执行时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。

每一个方法从调用直至执行结束,就对应着一个栈帧从虚拟机栈中入栈到出栈的过程。

其中局部变量表:存放了编译期可知的各种基本类型(boolean、byte、char、short、int、float、long、double)、对象引用(reference 类型)和 returnAddress 类型(指向了一条字节码指令的地址)

PC程序计数器:

存储的是下一条指令的地址,执行引擎(Execution Engine)根据PC寄存器将指令转化为机器语言。对于每个线程来说,需要执行的下一条指令的地址是不同的,在CPU快速切换的过程中,线程需要保存下一条指令的位置以便于下次CPU再次切换回来时继续执行,因此PC寄存器需要线程私有。

本地方法区native method area:

被native修饰的方法会存放到本地方法区中,在运行时调用本地方法接口JNI(java native Interface)去调用其他语言(一般是C,C++)去实现。(现在一般很少用到,主要是前期java发展需要借助C以及C++)

JVM参数调优针对的是进程区域

Meta Space元空间:

在jdk8中,元空间开始替代了方法区Method Area及堆中的Perm Gen永久代。并且元空间并不在虚拟机中,而是使用本地内存。

元空间被所有线程共享,存放了方法的定义信息,包括静态常量池(*.class文件中的常量池,包含了类信息如构造方法,接口定义等)及运行时常量池(编译期间生成的字面量、符号引用)。

然而注意字符串常量池以及类的实例化对象是在堆heap中的。

Heap堆:

垃圾回收主要针对堆Heap。存放了字符串常量池,数组以及类的实例化对象。

GC:Gabage Collection

垃圾收集是针对堆的。主要有两种形式:手工、自动,垃圾回收可以有效的防止OOM,(out of memory)内存泄露,有效的使用可以使用的内存。

手工:
调用的是System类中的gc()方法,此方法实际上调用的是Runtime类中的gc()方法,当一个对象被回收之前将调用类中的finlalize()方法,此方法为 Object类所提供,表示对象回收前的收尾工作。即使出现了异常,也不影响程序的执行。但是Java语言规范并不保证手动GC一定会执行。

自动:
对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。有两种标记方法:
1)引用计数法(reference counting):给对象添加一个引用计数器,每当有地方引用它时,计数器加1;当引用失效时,计数器减1。引用计数法实现简单,判定效率高,但是它很难解决对象之间的互相或循环引用(引用环问题)的问题

2)所以通常使用第二种,可达性算法(根搜索算法GC roots)采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当GC确定一些对象为"不可达"时(比如一个对象没有指向它的引用或者其赋值为null),GC就有责任回收这些内存空间。垃圾回收机以低优先级运行

GC的四种方法:
标记-清除法(Mark-Sweep)
:在标记(可达性算法标记)完成后统一回收所有被标记的对象。它是最基础的算法,后续算法都是基于它的不足而改进,主要不足有:效率问题,标记和清除效率都不高;另外一个是空间问题,标记清除后会产生大量不连续的内存碎片

复制算法(copying):在新生代Young Gen中将内存划分为一块较大的Eden空间(所有新建对象都诞生在这)和两块较小的Survivor空间(一个命名为from,一个为to,会互相交换),每次只使用Eden和其中一块Survivor。当回收时,将Eden和使用的Survivor中还存活的对象一次性复制到另外一块Survivor空间上,最后清理掉Eden和刚刚使用过的Survivor空间。Hotspot默认Eden/Survivor/Survivor=8:1:1,当然我们没法保证每次回收都只有不多于10%的对象存活,当Survivor空间不够用时(超过10%的对象存活),需要依赖其他内存进行分配担保(这里指老年代Tenured Gen),放不下的存活对象将进入老年代。(一般新生代中的对象默认经过15次GC后还存活也会进入老年代)

标记-紧凑法(mark-compact):将存活对象往一端移动,按照内存地址一次排序,然后将末端边界之外内存直接清理(一般用于老年代)

分代收集算法(gennerational collecting):JVM在实际垃圾回收中实际使用的是分代收集算法:根据对象存活周期的不同将内存划分为:新生代和老年代。
在新生代每次都只有少量对象存活,选用复制算法;
老年代中因为对象存活率高、没有额外空间对它进行分配担保,老年代就必须使用标记-紧凑法或标记-清除法进行回收。

所以GC有两种,年轻代的Minor GC,另外一个就是老年代的Full GC;新对象创建时如果eden伊甸园空间不足会触发Minor GC,如果此时老年代的内存空间不足会触发Full GC。

双亲委派机制:(Parents Delegation Model)

首先要知道 JVM中提供了三层的ClassLoader:

Bootstrap classLoader:主要负责加载核心的类库(java.lang.*等),其子加载器有ExtClassLoader和APPClassLoader。

ExtClassLoader:主要负责加载jre/lib/ext目录下的一些扩展的jar。

AppClassLoader:主要负责加载应用程序的主函数类

一个类加载的过程如下图:

当一个Hello.class这样的文件要被加载时。不考虑我们自定义类加载器,首先会在AppClassLoader中检查是否加载过,如果有那就无需再加载了。如果没有,那么会拿到父加载器ExtClassLoader,然后调用父加载器的loadClass方法。父类中同理也会先检查自己是否已经加载过,如果没有再往上。注意这个类似递归的过程,直到到达Bootstrap classLoader之前,都是在检查是否加载过,并不会选择自己去加载。直到BootstrapClassLoader,已经没有父加载器了,这时候开始考虑自己是否能加载了,如果自己无法加载,会下沉到子加载器去加载,一直到最底层,如果没有任何加载器能加载,就会抛出ClassNotFoundException。这种机制从一定程度上防止了危险代码的植入

AMESim柱塞泵建模全指南:从HCD库搭建到联合仿真 液压系统仿真中,轴向柱塞泵的建模始终是难点与热点。柱塞泵结构紧凑、功率密度高,在工程机械与航空航天领域应用广泛,然而其运动学与流体细节深度耦合,给仿真带来不小挑战。AMESim平台中的HCD库提供了一种从物理结构出发的建模思路,将柱塞泵分解为容积腔、节流口与机械约束等基础单元,从而真实刻画柱塞腔压力波动、配流特性和容积效率等关键行为,摆脱黑盒模型的局限。基于机理建模的仿真结果,可用于泵参数优化、故障特征分析以及控制策略验证。进一步结合AMESim与Simulink联合仿真,可以高效开发变量泵排量控制系统,研 阅读详情

相关推荐

PredFormer实战:用Transformer搞定交通流量预测(附TaxiBJ数据集代码)

本文详细介绍了如何利用PredFormer这一基于Transformer的先进模型进行交通流量预测,特别针对TaxiBJ数据集提供了完整的实战代码和优化策略。PredFormer通过门控Transformer块(GTB)的创新设计,在时空预测任务中展现出显著优势,相比传统方法将MSE降低33.1%,推理速度提升4.4倍。文章还涵盖了模型轻量化、部署优化等实用技巧,为智慧城市建设中的交通预测提供了高效解决方案。

weixin_29194817的博客 444

JVM 学习笔记

JVM 学习笔记JVM 学习笔记

cooldatabase 122

树莓派CM4 PCIe扩展方案与ASM1184e芯片应用

PCIe(Peripheral Component Interconnect Express)是计算机硬件中重要的高速串行总线标准,广泛应用于存储、网络等设备连接。其核心原理是通过差分信号实现高带宽传输,PCIe Gen2 x1的理论带宽可达5Gbps。在嵌入式开发中,PCIe扩展技术能有效解决单板计算机接口不足的问题,特别适合树莓派等微型平台。ASMedia ASM1184e作为PCIe交换芯片,可将单个接口扩展为多个,支持热插拔且免驱动,极大提升了工程灵活性。通过PCIe交换机方案,开发者能在树莓派CM

weixin_42602368的博客 421

jvm学习笔记

附件中是最近jvm的学习笔记分享给大家,如有不足之处请指出

翻过这座山,就到菩提洞了 128

OpenClaw(原Clawdbot/Moltbot)本地部署快速指南

支持Telegram、Slack、Discord、iMessage等多平台接入,通过配置文件或环境变量填写对应平台的Token,配置后执行。支持对接OpenAI、Anthropic、阿里云百炼等云端模型,也可搭配Ollama使用本地模型。默认仅允许已配对用户交互,群聊场景建议开启Docker沙箱模式,在配置文件设置。执行后跟随指引确认安全说明,进入QuickStart模式,默认网关端口为。可查看已加载模型,通过绑定的通讯通道发送测试指令,响应正常即部署完成。,限制非主会话操作权限,提升安全性。

wukangjupingbb的博客 8476

手把手教你学simulink(95.1)--PID控制实例:基于Simulink的PID控制温度控制系统建模与仿真

温度控制是工业自动化、家用电器、医疗设备以及航空航天等领域中常见的控制问题。通过精确的温度控制,可以提高生产效率、降低能耗并确保产品质量。PID(比例-积分-微分)控制器因其结构简单、性能稳定且易于实现而被广泛应用于各种温度控制系统。本项目旨在通过MATLAB/Simulink平台设计和验证一个基于PID控制的温度控制系统,重点研究PID参数调优方法、系统动态响应特性以及稳态误差消除能力。

MHD0815的博客 792

JVM学习笔记之CodeCache

JVM学习笔记之CodeCache - Java老K - 博客园

weixin_35843253的博客 205

JMeter压力测试全攻略:从入门到精通

本文系统讲解JMeter压力测试的完整流程与结果评估方法。开篇介绍压力测试的核心概念及JMeter工具特性,随后从环境搭建入手,详细说明JDK配置、JMeter安装及中文界面设置。主体部分围绕测试流程展开,涵盖测试计划创建、线程组参数调优、HTTP请求配置、断言与监听器添加等实操步骤;结果评估环节深入解析聚合报告指标、结果树分析及性能瓶颈定位方法,并通过电商接口测试案例演示全流程应用。文末总结关键要点,为读者提供从基础操作到分布式压测、性能调优的进阶学习方向,助力掌握JMeter在系统性能评估中的核心应用。

邓邓子的博客 2414

JVM最佳学习笔记---总览

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33724659的博客 160

【全局路径规划模块运动学算法】无人机Kinodynamic A*算法、Kinodynamic RRT*算法(附C++代码)

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对Kinodynamic A*算法做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容啃这个Kinodynamic A_star算法,建议先啃一啃高飞fast_planner那篇论文,把理论打好,如果还是比较迷,就先看Dijksta、再看A_star、再看hybrid A_star 三个的流程,因为往上资料比较多,再看这个Kinodynamic A_star算法,流程已经很相像了。如果。

qq_35635374的博客 2600

华为OD机试双机位C卷-部门人力分配 (Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【部门人力分配】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - 部门人力分配。

qq_45776114的博客 1872

【JVM】学习笔记

Java虚拟机(JVM)是一个抽象的计算机,用于运行Java程序,通过将字节码转换为机器码实现跨平台性。JVM架构包括类加载子系统、运行时数据区(如方法区、堆、栈等)和垃圾回收机制(GC),后者负责自动回收不再使用的对象。JVM的执行过程涉及字节码的加载、解释执行和即时编译(JIT),以提高性能。性能调优可通过调整堆内存、垃圾回收器和JVM参数实现。JVM还支持多线程和内存模型,确保线程安全。常见问题包括内存泄漏、OOM和性能瓶颈。直接内存是JVM外的高性能内存区域,常用于NIO操作,需手动管理。JVM与其

了凡 1053

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

JVM 基础知识学习笔记

JVM 一个运行在计算机上的程序,它的职责是运行 Java 字节码文件。

Gjw_java的博客 1155

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

(转)JVM学习笔记

JVM学习笔记 http://zjkilly.iteye.com/blog/772825

haoppywang的专栏 87

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

JVM学习笔记(1)-JVM总体篇

目录 0 前言 1 Java体系描述 1.1 Java体系构成 1.2 Java平台描述 2 JVM体系描述 2.1 JVM基本概念 2.2 ​​​​​​​JVM运行原理 3 示例 参考 0 前言      最近买了周志明的《深入理解Java虚拟机 JVM高级特性与最佳实践 》,结合网上的相关文章资料,尝试做一套JVM学习笔记,也算整理和巩固。相关引用文章,已罗列在参考篇中,...

wingsing2010的专栏 4700

JVM学习笔记 01、初识JVM

文章目录前言一、什么是JVM二、学习jvm的用途三、常见的jvm四、学习路线 前言 本篇博客是跟随黑马程序员JVM完整教程,全网超高评价,全程干货不拖沓的学习JVM的笔记,若文章中出现相关问题,请指出! 所有博客文件目录索引:博客目录索引(持续更新) 一、什么是JVM 定义:Java Virtual Machine - java 程序的运行环境(java 二进制字节码的运行环境) 好处: 一次编写,到处运行:JVM屏蔽了字节码和底层操作系统的差异,对外提供了一致的运行环境。解释的方法执行二进制字节码来达到

每个人都是独一无二的,把握好自己的节奏,跟着自己的心走。 859

JVM学习笔记1-JVM结束生命周期的几种情形

执行System.exit()方法 程序正常执行结果 程序在执行过程中遇到了异常或错误而终止 由于OS错误而导致JVM进程终止

lu322313的博客 188

JVM学习笔记10 - 类加载器总结

bilibili-深入理解JVM 虚拟机 学习笔记 JVM学习笔记 1 JVM学习笔记 2 JVM学习笔记 3 JVM学习笔记 4 JVM学习笔记 5 JVM学习笔记 6 JVM学习笔记 7 JVM学习笔记 8 JVM学习笔记 9 P32_JVM类加载器阶段性总结与学习方式升级(32) ...

晨猫 280

狂神说JVM学习笔记

静态变量、常量:static final类信息(构造方法、接口定义):Class文件,包括类的属性方法注解修饰符运行时的常量池:常量池栈栈的运行原理:通过栈帧对每一个方法进行调用栈里存放方法里局部变量的值(如果是基本数据类型,引用和值都存储在栈里)存放在局部变量表中如果时局部变量表中要存储的是字符串,那就是存储堆里面字符串常量池的地址,如果是存储的值,那就把值从方法区的运行时常量值中取出来,放进去(放的是值而不是地址),只有运行时才会存储,如果不运行局部变量表里就没有东西。

wangmr810的博客 1676

JVM学习笔记1

主要有五个阶段:(下面会重点讲解前三个阶段)

kwert666的博客 1647

由浅入深!腾讯大佬的“百万级”JVM学习笔记,从思维图+核心+架构让你一步到位

前言 毫不夸张地说,JVM是现代软件工程最成功的案例之一。因为它自带GC,又有无数可以微调的参数,且运行极其稳定可靠,所以,许多厂商的核心业务系统,才敢放心地用Java编写,运行在JVM之上。 近几年深入学习JVM调优的人越来越多,因为互联网一线大厂的Java高级开发工程师JD中都明确要求了“JVM调优”的能力。JVM调优是跳槽大厂必备的技能,但是由于JVM知识体系过于庞大,非系统学习难以学透,并且即使掌握了全部理论,没有实操,依然无法应对面试! 今天,特将腾讯大佬疯狂加持的“百万级”JVM学习笔记分

m0_50180963的博客 232

Java学习笔记之JVM篇

Java学习笔记之JVM篇前言问:什么是JVM?问:JRE/JDK/JVM是什么关系?判断对象是否存活的算法问:如何回收对象垃圾收集算法(4种) 前言 这是JVM学习笔记,内容主要来自 周志明编写的《深入理解Java虚拟机 JVM高级特性与最佳实践》(第2版)一书,相当于是此书的读书笔记,还有一些内容引用自公众号内容 问:什么是JVM? 答:JVM是Java Virtual Machine(Jav...

qq_34882796的博客 872
上一篇: Spring学习笔记(较长,可以按照目录看有需要的部分~)
下一篇: Mybatis学习笔记
老邓CODING
博客等级 码龄8年 9粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值