探索JVM

从今天起,算是给自己一个约束吧..坚持每周必要写一篇技术文章,养成一个习惯,时间久了就能形成知识体系。

今天来对JVM内存分配及JAVA内存回收、OOM异常等知识点做下复习

1) JAVA 内存分配
java内存分为六大类,堆、栈、寄存器、静态域、常量池、非RAM,这里主要介绍的是堆和栈。

JAVA每个线程都会有相对应的栈来维持其运作,JDK1.5以前默认的栈空间是256KB,现在默认的空间是1MB,当用户像web应用服务器发送请求的时候,tomcat会从线程池中拿出一个线程相应用户请求,相对应的此线程也会到JVM中申请栈空间。这里要声明下,[b][color=red]线程不是与“用户”绑定,而是与“请求”绑定[/color][/b],举个简单的实例,用户发送请求的时候,如果与请求相对应的线程没有执行完,即使Session过期,此线程也会继续执行。

JAVA堆内存是JVM进程中唯一的,分为新生区、幸存区、养老区、永久存储区、初始分配内存时候,对象放在新生区中,JVM会把不经常引用的内存移至到伊甸区,最后把部分移至到养老区,当类运行的时候,JAVA会把类信息移至到永久存储区,普通GC不会回收永久存储区对象。

静态变量会放在方法区中、实例变量会放在堆中,相对应引用会放在不同的栈中,只有当运行的时候才会对类变量进行内存分配。

2) javaGC

javaGC分为普通GC和FULL GC,普通GC时间比较短,会回收新生区、幸存区、FULL GC会移除堆中所有空间的未引用对象,JVM GC的时候会停止对外“服务”,因此减少GC的时间也是JVM优化的“点”之一,JVM有不同的回收器。不同的回收算法以后我会研究,这里待续。

3)OOM异常总结

Java heap space java堆溢出
PermGen space 方法区溢出或者常量池溢出
unable to create new native 线程太多溢出
StackOverflowError 栈空间不够溢出

相对应的溢出方式我们有相对应的调节方法,在工作中如果发现OOM问题,要以解决问题优先,其次是经验总结,把问题记录下来长久下来形成知识体系~
14、深入探索 GraalVM 与 JVM 生态系统 本文深入探讨了 GraalVM 及其原生镜像技术,以及 JVM 生态系统的多样性和各主流 JVM 实现的独特优势。从 GraalVM 的快速启动与资源优化,到 Eclipse J9、Amazon Corretto、Azul Zulu、IBM Semeru 和 Eclipse Temurin 等不同 JVM 的功能与适用场景,文章全面分析了开发者在不同项目需求下如何选择合适的 JVM 实现,以提升应用性能与稳定性。 阅读详情

相关推荐

告别Root!用Python脚本一键解密Android微信EnMicroMsg.db数据库(附完整源码)

本文详细介绍了如何在非Root环境下使用Python脚本一键解密Android微信EnMicroMsg.db数据库。通过ADB调试接口和SQLCipher技术,实现自动化提取和解密微信聊天记录数据库,无需Root权限,适合数据分析师和普通用户安全备份数据。

weixin_29266007的博客 331

探索JVM上的LISP

导读:   当前Java领域最激动人心的事情莫过于可允许其它编程语言运行于Java虚拟机上。围绕JRuby、Groovy、Scala还有 Rhino(JavaScript引擎)的讨论已经甚嚣尘上。可为什么要墨守陈规呢?如果你真的想跳出主流,投身于一种与Java截然不同的的语言,Lisp就不失为一种很好的选择。现在已有几种可运行于JVM上的Lisp程序设计语言的开源实现,准备好开始我们的探索

xu的blog 1479

[机器学习-回归实例] 李宏毅机器学习作业一:PM2.5 预测实例

[机器学习-回归实例] 李宏毅机器学习作业一:PM2.5 预测实例 简介   这是一个回归预测的实例,数据集来自李宏毅的《机器学习》课程的第一次作业,可以用来训练一个线性回归模型或者其他的回归模型,动手实践学习到的理论知识,在实践中去发现问题。这篇文章主要包括数据集的解释、数据的预处理过程及线性回归模型的代码实现这三个部分。由于这个数据集并不能直接使用,还需进行一些重构,为了对初学者更友好一些,我会提供重构完的可以读取后就直接使用的数据集,我也会提供 Matlab\rm MatlabMatlab 可直接使用

qq_27309515的博客 3574

JVM探索

JVM探索JVM探索 JVM探索 请你谈谈你对JVM的理解?java8虚拟机和之前的变化更新? 什么是OOM,什么是栈溢出StackOverFlowError?怎么分析? JVM的常用调优参数有哪些? 内存快照如何抓取,怎么分析Dump文件?知道吗? 谈谈JVM中,类加载器你的认识? JVM的位置 java程序泡在jvm上面,jre-jvm, 在操作系统之上,最底下是硬件系统。 JVM的体系结构 体系结构 jvm内存模型 jvm调优说的是“方法区”和“堆“,而”栈“、”本地方法栈“、”程

286

官网下载STM32系列芯片的产品选型手册

官方提供了产品选型手册,便于工程师们进行产品选型。 那么,在哪下载"产品选型手册"呢?请看下文。

Weber Zhou 的博客 1万+

24位ADC的精度陷阱:为什么你的ADS1232实测性能不达标?

本文深入探讨了24位ADC芯片ADS1232在实际应用中性能不达标的原因,揭示了高精度ADC性能依赖周边电路设计的关键问题。通过分析电源系统、参考电压稳定性、PCB布局等常见陷阱,提供了优化方案和调试技巧,帮助工程师充分发挥ADS1232的潜力,实现接近理论值的测量精度。

weixin_28285943的博客 406

JVM 探索之一:JVM 组成

目录 JVM在计算机中所处的层面 JDK,JRE,JVM JVM 主要组成 作为一个java开发程序员,心里头一直飘着一个问题--怎么启动一个java虚拟机? 答案不是简单的“运行 java xx.jar...的命令”,而是运行 java ... 命令时,计算机具体做了些什么。 经过一番探索,发现如果要掌握完整详细的答案,基本上都可以写一个基本的jvm了。所以退而求其次,探索一下一些表面的,能帮助我们精通应用并且能做一些优化的程度。 因此想探索一下 jvm...

fendoudexiaojue的博客 169

如何在Android上使用OpenCV进行摄像头标定

如何在Android上使用OpenCV进行摄像头标定,我们这里使用官方一个例程,其实并不难,只是网上的资料少了而已。相机标定是计算机视觉工作的前提,为了确定相机矩阵和畸变参数。

花草的博客 3440

深入探索 JVM 虚拟机

JVM(Java Virtual Machine)是 Java 程序的运行核心,它是 Java 实现跨平台特性的关键所在。Java 源代码经过编译后生成字节码文件(.class 文件),这些字节码文件可以在任何安装了兼容 JVM 的操作系统上运行,无需重新编译。这种特性使得 Java 应用能够在不同的操作系统环境(如 Windows、Linux、macOS 等)中无缝部署和执行。

m0_57836225的博客 1286

5分钟搞定Conflux钱包注册:Fluent钱包从安装到转账全流程指南

本文提供Conflux公链上Fluent钱包的完整注册和使用指南,涵盖从安装、助记词备份到CFX转账的全流程。特别强调安全操作要点,包括助记词保管和网络选择,帮助用户5分钟内快速掌握这款国产公链钱包的核心功能,确保数字资产安全。

weixin_29181861的博客 244

【100%通过率】华为OD机试真题 Python 实现【高矮个子排队】【2023 Q2 | 100分】

我们现在希望小朋友排队,以“高”“矮”“高”“矮”顺序排列,每一个“高”位置的小朋友要比相邻的位置高或者相等;要求小朋友们移动的距离和最小,第一个从“高”位开始排,输出最小移动距离即可。移动距离的定义如下所示:第二位小朋友移到第三位小朋友后面,移动距离为1,若移动到第四位小朋友后面,移动距离为2。现在有一队小朋友,他们高矮不同,,我们以正整数数组表示这一队小朋友的身高,如数组{5,3,1,2,3}。1:其实题目理解之后就知道,目标是要保证最小移动距离,且以高位为起点。2:try catch 异常处理。

MISAYAONE的博客 3144

探索 JVM

本文章内容基于 JDK 1.8 整理

qq_53821524的博客 1934

GRCNN抓取网络学习3【自制Jacquard数据集模型调优】

请先完成,这样有利于下面操作的理解!然后第二步是,有了自己的数据集输入到GRCNN中是三种文件,那么可以GRCNN抓取网络学习2【自制Jacquard数据集训练】!既然学会训练,那么开展下一步计划模型调优。GRCNN源码:https://github.com/skumra/robotic-grasping。

vor234的博客 2502

【JVM】JVM中JIT的详细探索

[[toc]] 前言 解释器:只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的。 特点:当程序需要迅速启动和执行的时候,解释器可以首先发挥作用,省去编译的时间,立即执行。 编译器:把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快。 特点:在程序运行后,随着时间的推移,编译器逐渐发挥作用,把越来越多的代码编译成本地代码之后,可以获取更高的执行效率。 两者的协作:在程序运行环境中内存资源限制较大时

时光、疏离了记忆づ童话的博客 2504

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

JVM原理及底层探索

JVM是Java程序运行的环境,但是他同时也是一个操作系统的一个应用程序的一个进程,因此JVM也有他自己的运行生命周期,也有自己的代码和数据空间。

Hello! Mr.L 5683

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

JVM应用探索

JVM里的堆大小如何配置? JVM默认堆大小 官方文档:https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/parallel.html#default_heap_size Default Heap Size Unless the initial and maximum heap sizes are specified on the command line, they are calculated based on the

技术摸索和实践者 248

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

JVM 虚拟机篇 - 01:探索 JVM 的世界

类加载器(ClassLoader)类加载器负责将字节码文件加载到 JVM 中。它遵循双亲委派模型等机制,确保类的加载过程安全且有序。例如,当一个类需要被加载时,首先会由当前类加载器委托给父类加载器去尝试加载,如果父类加载器无法加载,才会由当前类加载器进行加载。这一机制避免了类的重复加载和核心类被恶意篡改等问题。运行时数据区这是 JVM 内存管理的核心部分,包括程序计数器、Java 堆、方法区、虚拟机栈和本地方法栈等。程序计数器:它可以看作是当前线程所执行的字节码的行号指示器。

m0_57836225的博客 998

JVM内存管理与类加载机制深度探索(二)

JVM内存管理与类加载机制深度探索

编程技术探索者,分享C/C++、C#、Java、数据库等开发经验,聚焦实战技巧与AI兴趣,助力编程爱好者成长。 984

jvm7 jvm8_在JVM上探索LISP

jvm7 jvm8 目前,Java世界上最激动人心的事情之一就是正在努力使其他编程语言在虚拟机上运行。 关于JRuby,Groovy,Scala和JavaScript引擎Rhino的讨论很多。 但是为什么要停在那里? 如果您真的想跨出主流并涉足与Java完全不同的方面,那么Lisp是一个不错的选择。 而且,有几种针对JVM的Lisp编程语言的开源实现,可供探索。 那么,什么使Lisp值得一看...

cunfu6353的博客 472

探索未来编程新领域:HeLangKotlinScriptImpl —— 跨越至JVM的赛博之旅

探索未来编程新领域:HeLangKotlinScriptImpl —— 跨越至JVM的赛博之旅 在数字世界的浩瀚星海中,一种全新的编程语言横空出世,以其独特的魅力连接着过去与未来——这就是HeLangKotlinScriptImpl,一个旨在将“何语言”这一概念带入强大力量的JVM平台的创新之作。由李唐构思并启发,该项目不仅是对传统脚本语言的一次大胆挑战,更是程序员心中未来编程语言的雏形。 技术核...

gitblog_01050的博客 472

JVM深度探索系列

本文深入解析了JVM的核心机制,从基本的架构设计入手,逐步探讨了类加载器、内存管理与垃圾回收以及JIT编译技术。通过自定义类加载器、模拟内存泄漏与观察GC日志以及对比JIT编译与纯解释执行的性能差异三个实际可运行的代码案例,文章为读者展示了JVM内部运作的细节及其在实际应用中的优化手段。整体内容不仅帮助开发者更好地理解JVM如何高效执行Java程序,还为在特定场景下的性能调优提供了理论依据和实践参考。

欢迎来到我的技术博客 672
上一篇: 实习两个月总结
下一篇: 【转载】为什么使用 Redis及其产品定位
Program_newbie
博客等级 码龄18年 0粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值