java虚拟机

转载地址:http://blog.youkuaiyun.com/chaofanwei/article/details/19418753

深入理解java虚拟机(一):java内存区域(内存结构划分)
深入理解java虚拟机(二):java内存溢出实战
  
深入理解java虚拟机(三):String.intern()-字符串常量池
深入理解java虚拟机(四):对象存活判定算法和垃圾收集算法
深入理解java虚拟机(五):hotspot垃圾收集算法实现 
深入理解java虚拟机(六):java垃圾收集分析实战(内存分配与回收策略)
深入理解java虚拟机(七):java垃圾收集分析总结 

深入理解java虚拟机(八):java内存分析工具-MAT和OQL

 

图一:java内存结构划分


由上图可知,java内存主要分为6部分,分别是程序计数器,虚拟机栈,本地方法栈,堆,方法区和直接内存,下面将逐一详细描述。

  • 1、程序计数器

    线程私有,即每个线程都会有一个,线程之间互不影响,独立存储。

    代表着当前线程所执行字节码的行号指示器。
  • 2、虚拟机栈

    线程私有,它的生命周期和线程相同。

    描述的是java方法执行的内存模型:每个方法在执行的同时多会创建一个栈帧用于存储局部变量表、操作数栈、动态链表、方法出口等信息。

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

    局部变量表存放了编译期可知的各种基本数据类型和对象引用,所需内存空间在编译期确定。

    -Xoss参数设置本地方法栈大小(对于HotSpot无效)

    -Xss参数设置栈容量 例: -Xss128k

  • 3、本地方法栈

    同虚拟机栈,只不过本地方法栈位虚拟机使用到的native方法服务。

    Sun HotSpot虚拟机把本地方法栈和虚拟机栈合二为一。

  • 4、java堆

    线程共享

    主要用于分配对象实例和数组。

    -Xms参数设置最小值

    -Xmx参数设置最大值 例:VM Args: -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError

    若-Xms=-Xmx,则可避免堆自动扩展。

    -XX:+HeapDumpOnOutOfMemoryError可以让虚拟机在出现内存溢出是dump出当前的内存堆转储快照。

  • 5、方法区

    线程共享

    用于存储已被虚拟机加载的类信息、常量、静态变量、即使编译后的代码等数据。

    别名永久代(Permanent Generation)

    -XX:MaxPermSize设置上限

    -XX:PermSize设置最小值 例:VM Args:-XX:PermSize=10M -XX:MaxPermSize=10M

    运行时常量池(Runtime Constant Pool)是方法区的一部分。

    Class文件中除了有类的版本、字段、方法、接口等信息外,还有一项是常量池(Constant Pool Table),用于存放编译期生成的各种字面量和符号引用,这部分内容将在类加载后进入方法区的运行时常量池中存放。

    运行时常量池相对于Class文件常量池的一个重要特征是具备动态性:即除了Class文件中常量池的内容能被放到运行时常量池外,运行期间也可能将新的常量放入池中,比如String类的intern()方法。

  • 6、直接内存

    直接内存并不是虚拟机运行时数据区的一部分。

    在NIO中,引入了一种基于通道和缓冲区的I/O方式,它可以使用native函数直接分配堆外内存,然后通过一个存储在java堆中的DirectByteBuffer对象作为这块内存的引用进行操作。

    -XX:MaxDirectMemorySize设置最大值,默认与java堆最大值一样。

    例:-XX:MaxDirectMemorySize=10M -Xmx20M

     

    对于32位操作系统来说,系统最大内存为4G。

    系统给每个进程的内存是有限制的,譬如32位的windows 限制为2G


数字逻辑EduCoder课设项目 厨房计时器系统设计 Logisim实现 数字逻辑EduCoder课设项目 厨房计时器系统设计 Logisim实现 阅读详情

相关推荐

博途AI助手演示,完成简单且重复的梯形图代码,并导入到博途

自写个博途AI助手,下面演示AI帮我生成完善多个模拟量输入转换的代码,

gsjkwg的博客 1525

Java虚拟机的内存管理

文章目录Java虚拟机的内存管理一、JVM整体机构二、运行时内存1. PC程序计数器2. Java虚拟机栈3. 本地方法栈4. 堆4.1 Java堆的概念4.2 堆空间的分类4.3 对象的分配过程5. 方法区6. 元空间6.1 元空间和永久代的不同6.2 引入元空间的原因 Java虚拟机的内存管理 一、JVM整体机构 ​ JVM 是 Java Virtual Machine(Java虚拟机)的缩写,JVM 是一种用于计算设备的规范,它是一个虚构出来的计算 机,是通过在实际的计算机上仿真模拟各种计算机功能来

m0_53067943的博客 1287

一致性总线CMN600AE-ARM系列

主要介绍一致性总线CMN600AE,根据arm官网的spec来概述其模块。提示:以下是本篇文章正文内容,下面案例可供参考CMN600ae是基于Mesh拓扑结构,对外支持AMBA CHI/ACE-LITE等接口,内部改用路由结构转发数据,并提供硬件一致性和系统缓存,还支持多芯片互联。CMN600在T16FFC上可以做到2Ghz,另外AE版本增加了车轨芯片的安全功能,总线内部采用EDC检查,接口采用的奇校验。

tujiuguo3994的博客 6296

在windows系统中设置JVM(Java虚拟机)的内存

在windows系统中设置JVM(Java虚拟机)的内存

qq_43679849的博客 8117

Mathcad在LLC谐振变换器设计中的公式推导实战

本文通过Mathcad软件,详细演示了LLC谐振变换器设计的核心公式推导实战。文章阐述了如何利用Mathcad作为“会思考的草稿纸”,从定义基本参数、应用基波近似法(FHA)模型,到逐步推导电压增益公式及确定工作边界频率(fmin, fmax),并展示了如何通过动态参数扫描进行优化设计,帮助电源工程师高效、直观地完成理论计算,为后续仿真与实现奠定坚实基础。

q1w3e5r7t9y的博客 295

医疗影像处理实战:如何用Slicer和Mimics将.nii.gz文件转为.ply格式(附避坑指南)

本文详细介绍了利用3D Slicer和Materialise Mimics软件,将医学影像中常见的.nii.gz格式文件转换为通用三维网格.ply格式的完整实战流程。文章重点分享了从数据分割、DICOM序列导出到高质量网格生成的核心步骤与关键参数设置,并提供了针对常见问题的避坑指南,旨在帮助医学影像研究者和工程师高效完成从体数据到三维模型的关键转换。

weixin_28304023的博客 103

深入理解java虚拟机(一):java内存区域(内存结构划分)

图一:java内存结构划分 由上图可知,java内存主要分为6部分,分别是程序计数器,虚拟机栈,本地方法栈,堆,方法区和直接内存,下面将逐一详细描述。 1、程序计数器 线程私有,即每个线程都会有一个,线程之间互不影响,独立存储。 代表着当前线程所执行字节码的行号指示器。2、虚拟机栈 线程私有,它的生命周期和线程相同。 描述的是java方法执行的内存模型:每个方法在执行的同时多会创建

星空的专栏 2万+

告别AT串口线!用STM32F407的USB FS口直连EC800M进行物联网通信

本文介绍了一种创新的物联网通信方案,利用STM32F407的USB FS接口直连EC800M模块,替代传统的AT串口线连接。通过详细的硬件对比、STM32CubeMX配置和USB驱动调试步骤,展示了如何实现更高效的AT指令通信,同时降低硬件复杂度和功耗。

weixin_29189987的博客 706

通俗易懂的Java虚拟机内存模型

对于Java程序员来说,Java虚拟机提供了内存自动管理机制,因此可以在绝大部分情况下避免内存泄漏和内存溢出的情况,但是我们还是需要了解Java虚拟机是怎样对内存进行管理的,当遇到内存泄漏和内存溢出的问题时,解决起来才会得心应手。

StoNENee的博客 698

【LIN总线测试】——LIN主节点物理层测试

LIN总线是基于UART/SCI(通用异步收发器/串行接口)的低成本串行通讯协议。其目标定位于车身网络模块节点间的低端通信,主要用于智能传感器和执行器的串行通信,而这正是CAN总线的带宽和功能所不要求的部分。本章节主要介绍LIN主节点物理层如何测试?

测试领域技术分享 5530

QtQuick QML教程(2):qml语法介绍

​ qml一个普通的文本文件,后缀是.qml, 一个qml文件主要由两部分组成:(1) import语句 :这个就像C++中的头文件, 使用 import 导入qml需要的相关模块,可以查询Qt文档进行导入,注意每个版本的Qt模块声明可能都不同,相比于QWidget项目,QtQuick的变动是很大的;(2) QML对象树 :根对象是Window, 然后可以在Window中添加各种控件,例如按钮,文本,菜单等。

琅嬛福地 551

设置jvm内存

2,在系统变量中,新建变量JAVA_OPTS,值设置为 -Xms1024M -Xmx2048M -XX:PermSize=256M -XX:MaxNewSize=256M -XX:MaxPermSize=512M。设置完成后,web容器启动的时候,都会按这个配置初始化。1,打开windows系统环境变量。...

目标检测专栏持续更新中,改进YOLO系列通用,适用v5、v7、v8、所有博客均是团队原创博客,所有文章禁止转载,违者必究。 1462

(14-3)值分布式算法:QR-DQN (Quantile Regression DQN)算法

QR-DQN(Quantile Regression DQN)是一种强化学习算法,它是深度 Q-网络(Deep Q-Network,DQN)的一个变种,旨在更好地处理值函数的不确定性。QR-DQN的实现步骤与传统的DQN类似,但在目标分布计算和损失函数方面有一些不同之处,这使得它能够更好地处理值函数的不确定性。QR-DQN(Quantile Regression DQN)算法的核心思想是将值函数表示为一个分布,而不是传统的单一值估计。在下面的内容中,将讲解一个使用QR-DQN算法的例子。

码农三叔 2052

Dalvik虚拟机、Java虚拟机与ART虚拟机

一、Java虚拟机 1. Java的是Java字节码。 传统的Java程序经过编译,生成Java字节码保存在class文件中,Java虚拟机通过解码class文件中的内容来运行程序。 2. Java虚拟机基于栈架构。 程序在运行时虚拟机需要频繁的从栈上读取或写入数据,这个过程需要更多的指令分派与内存访问次数,会耗费不少CPU时间。 二、Dalvik虚拟机(Android 4....

YSoul的博客 7338

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

VC中sqlite的使用

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

浅谈Java虚拟机(一)—什么是Java虚拟机

首先,来看下面这张图,Java技术体系所包含的内容:Oracle Java SE 8 产品组件上图来自于Oracle官网 java SE(java 平台标准版) 8 产品文档(),先别被这么多东西唬住,总体来说,Java SE包括了JDK(开发工具包)与JRE(运行环境)。开发人员要使用java开发,就需要依赖JDK,JDK中主要包含了编译与调试工具。

rita_0567的博客 900

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

一起走进Java虚拟机的世界 —— 为什么要弄懂虚拟机

从本周开始,专栏Effective Java将开启一个全新的专题——Java虚拟机,在这个专题的课程里,您将学到如何定位OutOfMemory异常、如何进行JVM调优之类的知识,本文作为专题的开篇,带读者走进Java虚拟机的世界。

SexyCode 6720

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

初识Java虚拟机

主要介绍了Java语言和Java虚拟机的发展历史,并介绍了Java生态环境中两份非常重要的规范—Java语言规范和Java虚拟机规范。其中Java虚拟机规范将成为本书后续讨论的重点内容。同时,作为了解Java虚拟机的第一步,简要介绍了整数和浮点数在Java虚拟机中的 表示方式。

guye 1822

java虚拟机在所有平台上都是一样的_Java代码如何运行在Java虚拟机中

我们都知道要运行 Java 代码就必须要有JRE,也就是Java运行时环境,JRE中包含了Java程序的必需组件,包括Java虚拟机以及Java核心类库,然而运行C++代码则不需要额外的运行时环境,只需要把代码编译成CPU能识别的指令即可,也就是机器码.那为什么Java不直接像C++那样而需要在虚拟机中运行呢?他在虚拟机中又是如何运行的?接着往下看.Java为什么要在虚拟机中运行刚才我们谈到C++...

weixin_39604516的博客 792

dalvik虚拟机和java虚拟机的关系_Android系统Dalvik虚拟机与Java虚拟机的区别

Dalvik虚拟机作为Android平台的核心组件,拥有如下几个特点:体积小,占用内存空间小;专有的DEX可执行文件格式,体积更小,执行速度更快;常量池采用32位索引值,寻址类方法名、字段名、常量更快;基于寄存器架构,并拥有一套完整的指令系统;提供了对象生命周期管理、堆栈管理、线程管理、安全和异常管理以及垃圾回收等重要功能;所有的Android程序都运行在Android系统进程里,每个进程对应着一...

weixin_35625676的博客 444

java虚拟机是什么?

一、java虚拟机定义: 虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。 所谓的java虚拟机,就是一台虚拟的机器。它是一款软件,用来执行一系列虚拟计算机指令,大体上虚拟机可以分为系统虚拟机和程序虚拟机。visual Box、VMare就属于

qq_46416934的博客 2125

Java虚拟机的基本结构

本章主要介绍了Java虚拟机的基本结构,其中,对Java堆、Java栈和方法区做了较为完整的说明。同时,也对如何设置Jva虚拟机参数做了简要说明。

guye 2275

java虚拟机_Java虚拟机详解——简介

作者: YSOcean 原文链接:https://www.cnblogs.com/ysocean/p/7921930.html目录1、Oracle Java SE 8 产品组件2、虚拟机3、Java虚拟机4、Java虚拟机种类1、Oracle Java SE 8 产品组件通过上面给定的地址,我们可以看到如下这张图:通常来说 Java平台标准版(Java SE)包括 Java SE开发工具包(JDK...

weixin_39802519的博客 409

java虚拟机有什么作用_java虚拟机有什么用

Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机(Java Virtual Machine 简称JVM)是运行所有Java程序的抽象计算机,是Java语言的运行环境,它是Java 最具吸引力的特性之...

weixin_29247219的博客 1401

java虚拟机进程,Java虚拟机 和 java虚拟机下的进程

一、什么是Java虚拟机当你谈到Java虚拟机时,你可能是指:1、抽象的Java虚拟机规范2、一个具体的Java虚拟机实现3、一个运行的Java虚拟机实例二、Java虚拟机的生命周期一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序。程序开始执行时他才运行,程序结束时他就停止。你在同一台机器上运行三个程序,就会有三个运行中的Java虚拟机。Java虚拟机总是开始于一个main()方法,...

weixin_32211137的博客 653

虚拟机与java虚拟机

1、虚拟机 所谓虚拟机(Virtual Machine), 就是一台虚拟的计算机。它是一款软件,用来执行一系列虚拟计算机指令。大体上,虚拟机可以分为系统虚拟机和程序虚拟机。 大名鼎鼎的Visual Box, VMware就属于系统虚拟机,它们完全是对物理计算机的仿真,提供了一个可运行完整操作系统的软件平台。 程序虚拟机的典型代表就是Java虚拟机,它专门为执行单个计算机程序而设计,在Java虚拟机中执行的指令我们称为Java字节码指令。 无论是系统虚拟机还是程序虚拟机,在上面运行的软件都被限制于虚

weixin_43319635的博客 563

初探Java虚拟机

初探Java虚拟机

a328062954的博客 427
上一篇: 单例设计模式
下一篇: 通过Runnerable创建线程
RollingInTheDeepc
博客等级 码龄9年 10粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值