初识Java虚拟机

news2024/12/22 23:42:03

1.概述

Java虚拟机:Java Virtual Machine。正是有了Java虚拟机,Java语言实现了跨平台的特性,一次编译,多处运行。

目前使用范围最广的虚拟机就是Hotspot VM,它是OracleJDK和OpenJDK中的默认Java虚拟机。

相比于其他需要自己管理内存的语言来说,我们在开发Java程序的过程中,是不太需要刻意去关注Java语言的内存管理机制,因为Java虚拟机为我们提供了自动内存管理的机制。

也正是因为我们控制内存的权力交给了Java虚拟机,所以可以在开发过程非常的便捷,不过也正是因为这个原因,一旦出现了内存泄漏内存溢出方面的问题,如果不了解虚拟机是怎样管理内存的,那排查错误将会成为一项异常艰难的工作。

在绝大多数情况下,提升硬件性能无法等比例提升程序的运行性能和并发能力,甚至有可能对程序运行状况没有任何改善。

那么,对软件参数的调优则至关重要。目前商用的高性能Java虚拟机都提供了相当多的优化参数和调节手段,用于满足应用程序在实际生产环境中对性能和稳定性的要求。

2.相关概念

​ JDK(Java Development Kit):Java开发工具包,包含Java语言、Java类库、Java虚拟机。是提供给Java开发者使用的。

​ JRE(Java Runtime Environment):Java运行时环境,包含Java类库、Java虚拟机 。为使用Java语言编写的程序提供了运行所需的环境。

​ JIT Compiler:即时编译器(Just In Time Compiler),在Java环境中,即时编译器就是一个把Java的字节码转换成处理器可执行指令的程序。

3.内存管理

正是因为Java虚拟机提供了对内存自动管理的机制,使得我们在开发过程中才无需关注内存问题。但是一旦出现内存泄漏和内存溢出问题,就需要我们了解Java虚拟机管理内存的原理,才能更好解决这些问题。

Java运行时数据区域

Java虚拟机在执行Java程序时,会把它所管理的内存划分为不同的数据区域。

有的区域随着虚拟机进程的启动而一直存在,随着虚拟机进程的结束而销毁,有的区域则是随着用户线程的启动和结束而存在和销毁。

有的区域是线程共享的,有的区域则是线程隔离的。

最后,欢迎关注微信公众号一起交流

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/183476.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[Android Studio]开发APP应用出现软件程序打开闪退的排错

🟧🟨🟩🟦🟪 Android Debug🟧🟨🟩🟦🟪 Topic 发布安卓学习过程中遇到问题解决过程,希望我的解决方案可以对小伙伴们有帮助。 📋笔记目…

你还没用过Mybatis-Plus?丝般顺滑,快速上手!

一、概述 1.1、什么是MyBatis-Plus MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 1.2、特性 无侵入:只做…

RabbitMQ入门前篇

本篇博文目录:一.RabbitMQ1.消息队列2.RabbitMQ3.安装RabbitMQ4.RabbitMQ常用命令二.使用RabbitMQ进行编程1.AMQP2.第一次MQ通信三.RabbitMQ六中工作模式1.RabbitMQ2.Work queues3.pub/sub订阅发布模式4.Routing模式5.主题Topic模式四.RabbitMQ消息确认机制五.源代码下载一.Rab…

我性格比较内向,适合做管理吗?

许多刚走上管理岗位的朋友,都有这样的困惑:1.我比较内向,不适合做管理。2.我不擅长演讲,没有领导才能。3.我太谨小慎微了,做不好领导。4.我太喜欢出风头,静不下心来做管理。5.我太强势了,团队很…

GuLi商城-项目初始结构创建,GitHub仓库创建

GitHub账号和密码 账号:11360XXXXXqq.com 密码:ZH**SH*19**1016 新建仓库: gulimall 记得勾选下Add a README file,上面忘记勾选了,实际建议还是要勾选下 复制路径: 打开IDEA检出项目 创建商品微服务模…

芯片设计|FPGA 设计的指导原则(一)

这一部分主要介绍 FPGA/CPLD 设计的指导性原则,如 FPGA 设计的基本原则、基本设计思想、基本操作技巧、常用模等。 FPGA/CPLD 设计的基本原则、思想、技巧和常用模块是一个非常大的问题,在此不可能面面俱到,只能我们公司项目中常用的一些设计…

权值线段树 详解+操作模板(c++)

文章目录权值线段树添加一个数字求某数出现的次数查询一段区间中数字出现的次数查询整个值域中第k小的数查询整个值域中第k大的数例子:求逆序对关于基本线段树与线段树的模板,请看我们之前发布的博客: 线段树入门详解 维护加法乘法&#xff0…

关于“茴香豆的‘茴’有几种写法”:学习过程中,若时间精力有限则优先记住最好用的一种

学习过程中的细节整理和精力节省权衡 我平时学习有整理总结、记笔记的习惯。 我学新东西总是很慢,因为细节处几乎都不会放过,会去发散,去深挖,去比较之前。 刚才上网,查了C语言中二维数组的赋值方式,某个…

UVM实战笔记(七)

第七章. UVM中的寄存器模型 7.1 寄存器模型简介 7.1.1 带寄存器配置总线的DUT 本章节使用的DUT带寄存器配置,代码如下: module dut(clk,rst_n,bus_cmd_valid,bus_op,bus_addr,bus_wr_data,bus_rd_data,rxd,rx_dv,txd,tx_en)input clk; …

DaVinci:Camera Raw(Sony RAW)

本文主要介绍 Sony RAW 格式素材相关的 Camera Raw 参数。解码质量Decode Quality解码质量决定了图像解拜耳之后所呈现的素质。默认为“使用项目设置” Use project setting,表示使用项目设置对话框中的“Camera RAW”解码质量设置。还可选择:全分辨率 -…

JavaEE-网络编程

目录一、网络编程套接字二、UDP Socket2.1 客户端服务器程序-回显服务(EchoServer)2.1.1 UdpEchoServer2.1.2 UdpEchoClient2.1.3 一个简单程序三、TCP 客户端服务器程序3.1 TCP API一、网络编程套接字 网络编程套接字就是操作系统给应用程序提供的一组API(叫做socket API)。 …

NLP学习笔记(七) BERT简明介绍

大家好,我是半虹,这篇文章来讲 BERT\text{BERT}BERT (Bidirectional Encoder Representations from Transformers) 原始论文请戳这里 0 概述 从某种程度上来说,深度学习至关重要的一环就是表征学习,也就是学习如何得到数据的向…

怎么把两个PDF合并?教你们几个简单的方法

不知道大家平时处理文件的数量多不多,但是小编日常处理文件真的特别多,所以小编经常会使用专业的格式转换器来处理文件,这样就可以高效处理文件了,例如我们需要将多个PDF文件合并,这样就只需要传输一个文件就可以了&am…

自定义starter解决请求绕过网关问题

引言 微服务项目中网关是一个常见的模块,通过网关的分发可以实现负载均衡、鉴权等操作;但是搭建好网关可以发现,虽然可以通过网关端口请求后端,如果有其他服务的地址依然可以使用其他服务地址绕过网关请求,这里我提供…

利用RadminLan和TcpRoute2将工作带回家

需要准备的工具 1.RadminLan 下载地址–>https://www.radmin-lan.cn/ 2.TcpRoute2 项目地址–>https://github.com/GameXG/TcpRoute2 *选用:浏览器插件proxy-switchyomega:https://microsoftedge.microsoft.com/addons/detail/proxy-switchyomega…

Visual Studio Code 的安装和使用

Visual Stuio Code 微软出的一款免费编辑器。 有 Windows、Linux 和macOS 三种版本的,属于跨平台的编辑器。它功能强大,支持插件工具安装,对于写代码、阅读代码的人来说是非常方便的。 1、安装 Visual Stuio Code 下载地址如下: h…

win10修改jdk版本之后不生效的有效解决方法

问题起因今天学习seata的时候,启动seata服务发现启动不了报下图错误。发现是自己jdk版本太高了,现在我用的是jdk17。然后我修改jdk的环境变量,确定保存好。发现jdk的版本还是没有变化。问题原因当使用安装版本的JDK程序时(一般是1…

jmeter 并发测试

1.右键测试计划(Test plan), 添加线程组 2.线程组配置 3.右键线程组, 添加取样器-HTTP请求 4.HTTP请求配置 5. 添加查看结果树(也可以在Test plan 测试计划上右键添加)

Grafana 系列文章(二):使用 Grafana Agent 和 Grafana Tempo 进行 Tracing

👉️URL: https://grafana.com/blog/2020/11/17/tracing-with-the-grafana-cloud-agent-and-grafana-tempo/ ✍Author: Robert Fratto • 17 Nov 2020 📝Description: Heres your starter guide to configuring the Grafana Agent to collect traces and…

【刷题】多数元素

这是leetcode第169题的解答。 目录 一、多数元素 二、实现思路 1.排序中间下标求众数 2.投票法 总结 一、多数元素 多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 二、实现思路 1.排序中间下标求众数 原理: 通过排序使得数组有序,因为多数元素…