Jvm技术总结

news/2024/7/20 14:22:36 标签: 运维, java, 内存管理

Java程序运行机制和虚拟机内存介绍

先编译,再解释。Java源文件使用javac编译成.class字节码文件,再解释成平台机器码。

Jvm自动内存管理

Jvm内存区域介绍

栈内存存储的是局部变量,堆内存存储的是实体,栈内存更新快,存放的变量生命周期结束之后释放,堆内存存放的实体会被垃圾回收机制不定时回收。
图片描述

把管理的内存划分成不同的数据区域,方法区、堆 <--->执行引擎 ---->(本地库接口)
虚拟机栈、本地方法栈、程序计数栈<--->本地库接口 ---->本地方法库

  • 程序计数器:较小,当前字节码行号指示器,通过改变值选取下一条指令。各线程之间的计数器互不影响。
  • 虚拟机栈:线程私有,生命周期与线程相同,每个方法执行时创建一个栈帧(Stack Frame),存储局部变量表等信息,局部变量表内存空间分配在编译期间完成
  • 本地方法栈:与虚拟机栈类似,区别为本地方法栈为Native方法服务
  • Java堆:通常来说是内存空间最大的一块儿,被所有线程共享,唯一目的就是存放对象实例。从内存回收角度,又被成为GC(garbage collection)堆,还可细分为新生代,老年代
  • 方法区:与Java堆一样,线程共享,用于存储已被虚拟机加载的类信息、 常量、 静态变量、 即时编译器编译后的代码等数据。这区域的内存回收目标主要是针对常量池的回收和对类型的卸载

http://www.niftyadmin.cn/n/1149129.html

相关文章

计算机程序的构造和解释 练习题2.32

递归思路 集合的所有子集&#xff08;集合第一个元素和除了第一个元素的集合的所有子集的组合后的集合&#xff09; 除了第一个元素的集合的所有子集的组合&#xff1b; 拿(1 2 3)这个集合为例&#xff1a; (1 2 3)的所有子集 (1和(2 3)的所有子集元素组合后的集合&#xff0…

Redis常用的一些功能

Redis常用的一些功能 Redis的特性 : Strings&#xff1a;Strings 数据结构是简单的key-value类型&#xff0c;value其实不仅是String&#xff0c;也可以是数字. 常用命令: set,get,decr,incr,mget 等。 常用方法&#xff1a; 列表内容 获取字符串长度 往字符串append内容 设置和…

openssl 生成沃通ssl证书

2019独角兽企业重金招聘Python工程师标准>>> [TOC] 生成证书 系统唯一的要求是必须是2048位加密长度CSR&#xff0c;而对CSR各个字段的内容没有任何要求&#xff0c;您可以随便写 Enter pass phrase for chanrongdai.com.key: XXXXX openssl genrsa -aes256 -out ch…

MySQL的变量分类总结

在MySQL中&#xff0c;my.cnf是参数文件&#xff08;Option Files&#xff09;&#xff0c;类似于ORACLE数据库中的spfile、pfile参数文件&#xff0c;照理说&#xff0c;参数文件my.cnf中的都是系统参数&#xff08;这种称呼比较符合思维习惯&#xff09;&#xff0c;但是官方…

计算机程序的构造和解释 练习题2.35

#lang racket(define (accumulate op initial sequence)(if (null? sequence)initial(op (car sequence)(accumulate op initial (cdr sequence)))))(define (count-leaves t)(accumulate 0 (map (lambda (x)(if (pair? x) (count-leaves x) 1))t)))(count-leaves (1 (3 (1 …

计算机程序的构造和解释 练习题2.36

#lang racket(define (accumulate op initial sequence)(if (null? sequence)initial(op (car sequence)(accumulate op initial (cdr sequence)))))(define (accumulate-n op init seqs)(if (null? (car seqs))null(cons (accumulate op init (map (lambda (x) (car x)) seq…

MarkDown自动生成目录(文章开头或者侧边目录)

1、使用doctoc 生成目录 在文章开头 // 安装 npm install -g doctoc // 用法 // 指定单个文件 doctoc xx.md // 指定目录 doctoc . 复制代码如果没有按照npm&#xff0c;可以先安装homebrew 网址&#xff1a;https://brew.sh/ 命令&#xff1a;/usr/bin/ruby -e "$(curl -…

计算机程序的构造和解释 练习题2.37

#lang racket (define (accumulate op initial sequence)(if (null? sequence)initial(op (car sequence)(accumulate op initial (cdr sequence)))))(define (accumulate-n op init seqs)(if (null? (car seqs))null(cons (accumulate op init (map (lambda (x) (car x)) se…