java 内存

java 内存

大多数 JVM 将内存区域划分为 Method Area(Non-Heap)(方法区) ,Heap(堆) , Program Counter Register(程序计数器) , VM Stack(虚拟机栈,也有翻译成JAVA 方法栈的),Native Method Stack ( 本地方法栈 ),其中Method Area 和 Heap 是线程共享的 ,VM Stack,Native Method Stack 和Program Counter Register 是非线程共享的。为什么分为 线程共享和非线程共享的呢?请继续往下看。

首先我们熟悉一下一个一般性的 Java 程序的工作过程。一个 Java 源程序文件,会被编译为字节码文件(以 class 为扩展名),每个java程序都需要运行在自己的JVM上,然后告知 JVM 程序的运行入口,再被 JVM 通过字节码解释器加载运行。那么程序开始运行后,都是如何涉及到各内存区域的呢?

概括地说来,JVM初始运行的时候都会分配好 Method Area(方法区) 和Heap(堆) ,而JVM 每遇到一个线程,就为其分配一个 Program Counter Register(程序计数器) , VM Stack(虚拟机栈)和Native Method Stack (本地方法栈), 当线程终止时,三者(虚拟机栈,本地方法栈和程序计数器)所占用的内存空间也会被释放掉。这也是为什么我把内存区域分为线程共享和非线程共享的原因,非线程共享的那三个区域的生命周期与所属线程相同,而线程共享的区域与JAVA程序运行的生命周期相同,所以这也是系统垃圾回收的场所只发生在线程共享的区域(实际上对大部分虚拟机来说知发生在Heap上)的原因。
java内存模型
在这里插入图片描述
方法区域存放了所加载的类的信息(名称、修饰符等)、类中的静态变量、类中定义为final类型的常量、类中的Field信息、类中的方法信息,当开发人员在程序中通过Class对象中的getName、isInterface等方法来获取信息时,这些数据都来源于方法区域,同时方法区域也是全局共享的,在一定的条件下它也会被GC,当方法区域需要使用的内存超过其允许的大小时,会抛出OutOfMemory的错误信息
在这里插入图片描述

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

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

相关文章

android内存显示大小不一样,对Android很重要!手机运行内存真的越大越好吗?

从去年开始,4G RAM 容量渐成 Android旗舰手机标配,甚至出现了恐怖的6GB RAM。在处理器核心数以及跑分对消费者刺激减弱的情况下,RAM 容量大小渐成 Android 手机阵营新的比拼点,那么大内存对手机运行速度有多大影响呢?手…

华为鸿蒙什么时候出12g内存,内存真是越大越好?为何华为不上12G,看完秒懂!...

苹果ios和安卓系统因为运行机制的不同,以流畅著称,安卓的卡顿那是出了名的,但是经过长期不懈的改进和软硬一体的优化,论流畅反应速度上华为已经超越了苹果。华为要悠着点,一是要控制价格,二是要控制成本&am…

鸿蒙运行内存4G手机,手机运行内存真的越大越好吗?其实你们都被忽悠了

从去年开始,4G RAM 容量渐成 Android旗舰手机标配,甚至出现了恐怖的6GB RAM。在处理器核心数以及跑分对消费者刺激减弱的情况下,RAM 容量大小渐成 Android 手机阵营新的比拼点,那么大内存对手机运行速度有多大影响呢?手…

你知道为啥给JVM分配的内存越大,结果性能越差吗?

前言 这篇文章,给大家聊一个生产环境的实践经验:线上系统部署的时候,JVM堆内存大小是越大越好吗? 先说明白一个前提,本文主要讨论的是Kafka和Elasticsearch两种分布式系统的线上部署情况,不是普通的Java应…

计算机硬盘越大运行速度越大吗,电脑的内存越大越好吗?如果只加大内存,电脑反而会被拖慢!...

科技一直在进步,电脑的部件也都在更新换代,但是为什么原来用的好好的电脑,都慢慢的变卡了呢?除了用的时间长的器件老化,还有一个原因就是软件和系统也在跟新换代,由与硬件的进步,软件和系统也都…

通常计算机的存储容量越大性能就越好吗,容量越大越好?教你正确挑选内存的姿势...

内存是计算机中重要的配件之一,是与CPU进行沟通的桥梁。主要用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。由于计算机中所有程序的运行都是在内存中进行的,因此内存的性能以及稳定运行对计算机的影响非常大。 很多用户对内…

计算机的储存容量越大性能就越好吗,内存是否越大越好

内存是大家耳熟能祥的东西,是电脑必备的配件之一,内存是否越大越好?合适的内存有助于提升电脑的性能,带给我们更畅快的体验。小编给大家科普一下内存知识吧。 电脑内存并不是越大越好,电脑的内存大小与计算机的运算速度…

是不是虚拟内存越大越好

虚拟内存的概念是相对于物理内存而言的,当系统的物理内存空间入不敷出时,操作系统便会在硬盘上开辟一块磁盘空间当做内存使用,这部分硬盘空间就叫虚拟内存。 windows 98中采用win386.swp文件的形式,而windows 2000/XP则采用页面文…

从零开始学习 Java:简单易懂的入门指南之多态(十)

多态&包&final&权限修饰符&代码块 第一章 多态1.1 多态的形式1.2 多态的使用场景1.3 多态的定义和前提1.4 多态的运行特点1.5 多态的弊端1.6 引用类型转换1.6.1 为什么要转型1.6.2 向上转型(自动转换)1.6.3 向下转型(强制转换…

【python】一文了解Python爬虫 | 文末送书

目录 引言 1. 爬虫基础知识 1.1 什么是爬虫 1.2 HTTP协议 1.2.1 HTTP请求方法 1.GET请求 1.2.2 请求头常见字段 1.2.3 响应状态码 1.3 HTML解析 1.3.1 Beautiful Soup 解析库 1.3.2 XPath xpath解析原理: xpath 表达式 2. 爬虫进阶技巧 2.1 防止被反爬虫 2.1.1 …

iphone或者ipad上安装自己打包的ipa文件

对于非ios开发者来说,这确实是一个问题,但我懂的也不多,也是抱着试试的态度安装了下,之前我以为安装ipa和在安卓手机上安装apk一样,qq或者微信传文件下载点击就可以安装了,但这个ipa如果在iphone上这样做&a…

误删库后的恢复方法分享

省流助手:项目代码中实现定时备份功能 写在前面:项目使用的是docker发布、下午相关同事反馈题库同步功能用不了了有报错,查看服务器这个项目发布的版本发现有段时间没更新了,所以当时想的会不会因为jar包没有更新,于是…

达梦数据库的备份、还原和恢复

一、备份、还原和恢复的意义 备份的主要目的是数据容灾,保证数据的安全性,在数据库发生故障时,通过还原备份集,将数据恢复到可用状态。还原与恢复的主要目的是将目标数据库恢复到备份结束时刻的状态。 二、备份的方式 物理备份…

PhoneRescue for Mac(iOS数据恢复软件)

一款帮助用户恢复手机数据的Mac手机助手,PhoneRescue for mac是个包罗万象的iOS数据恢复程序设计用于检索您丢失的照片,音乐和更多的信息,在您的iPhone,ipad和iPod-touch上进行数据恢复。 PhoneRescue mac版安装教程 软件下载完成…

Gitlab 数据备份和还原(填坑版)

此文章适用于因更换服务器或者 gitlab 安装方式变更&#xff08;普通方式 <> docker&#xff09;进行数据迁移&#xff0c;或者日常备份还原。 前提条件&#xff1a;备份和还原的 gitlab 版本一致&#xff01; gitlab 版本查看命令&#xff1a;gitlab-rake gitlab:env:…

iOS设备数据恢复工具:UltData mac中文版

Tenorshare UltData Mac版是一款非常优秀的iOS数据恢复工具。Tenorshare UltData为您提高了3种恢复模式&#xff0c;能够在几秒钟内找回您想要的所有数据信息&#xff0c;您从此就不用担心会丢失重要信息的问题。不仅如此&#xff0c;ultdata中文版还可以对各种iOS系统问题修复…

cs231nassignment2 q4 Convolutional Neural Networks

文章目录 嫌啰嗦直接看源码Q4 Convolutional Neural Networks 卷积神经网络conv_forward_naive题面解析代码输出 conv_backward_naive题面解析代码输出 max_pool_forward_naive题面解析代码输出 max_pool_backward_naive题面解析代码输出 Fast Layers遇到的问题解决办法输出 Th…

Mac中Jmeter下载与安装

Step 1:下载 1、下载网址&#xff1a;http://jmeter.apache.org/download_jmeter.cgi 2、选择Binaries中的 apache-jmeter-5.1.tgz 进行下载&#xff08;binaries编译好的二进制压缩包&#xff1b;source为源码压缩包&#xff09; 3、下载完成后&#xff0c;双击压缩包进行解压…

Mac多线程下载工具Neat Download Manager Mac免费版

Neat Download Manager Mac版是Mac上一款免费好用的多线程下载工具。NeatDownloadManager Mac版使用动态分段算法下载文件,支持HTTP,HTTPS和FTP协议,HTTP和代理身份验证,轻松加快你的下载速度! Neat Download Manager Mac免费版软件介绍 Neat Download Manager是一个简单…

Mac10.14安装Jdk11.04版本

初语&#xff1a; 环境&#xff1a;MacOs Mojave10.14.6 Java环境&#xff1a;jdk11.04 为了学习vue的静态文件打包webpack部分&#xff0c;需要安装node.js&#xff0c;可是又依赖于java环境。电脑刷了mac系统&#xff0c;而且已经适配得很不错了现在&#xff0c;可以作为生…