jvmjava堆内存

嘿十三      2022-05-04     787

关键词:

应用程序以及相关数据将决定Java堆空间占用需求。通过静态内存,可“预测”下面的内存需求:

  • 确定将会有多少不同的应用程序部署到预先计划的一个单独的JVM进程上,例如有多少个ear文件、war文件、jar文件等。在一个JVM上部署的应用程序越多,对本机堆的需求就越多。
  • 确定有多少个类需要在运行时加载:包括第三方API。越多的类加载器和类在运行时被加载,在HotSpot VM PermGen空间和内部JIT相关优化对象上的需求就越高。
  • 确定数据缓存占用,如应用程序加载内部缓存数据结构(和第三方API),例如数据库中的数据缓存,从文件中读取数据等。数据缓存使用越多,Java Heap OldGen空间需求就越高。
  • 确定允许建立的中间件线程数量。这是非常重要的,因为Java线程需要足够的本机内存,否则会抛OutOfMemoryError异常。

在JVM进程上部署的应用程序越多,对本地内存和PermGen空间的要求就越高。数据缓存并不是序列化为一个磁盘或数据库,它将从OldGen空间里面需要额外的内存。

 

你有5个ear应用程序(2000多个Java类)要部署(包含中间件代码)

  1. 本地堆需求估计为1GB(必须足够大以处理线程创建等等。)PermGen空间大约是512 MB。
  2. 内部静态缓存大约500MB
  3. 在高峰时间,总预测流量是5000个并发用户
  4. 每个用户的会话数据大约500K
  5. 在高峰期间,总流量会话要求是2.5GB。

正如你所看到的一样,在如此情况下,32位JVM进程就无法满足。一个典型的解决方案是进行流量拆分,在几个JVM进程或物理主机(假设有足够的硬件和CPU core可用)上。

大多数时候,业务流量将推动内存占用。除非你需要大量的数据缓存来实现适当的性能,典型的门户应用网站(媒体)繁重的应用程序需求。数据缓存太多的时候应该用一个黄色的标志标注一下,最好早点去重新审视一下一些设计元素。

 

java虚拟机jvmjava堆方法区java栈

java堆是java应用程序最密切的内存空间。差点儿全部的对象都存在堆中。java堆全然自己主动化管理,通过垃圾回收机制,垃圾对象会自己主动清理。不须要显式释放。依据java垃圾回收机制的不同。java堆可能有不同的结构。最常... 查看详情

jvmjava内存模型

硬件的效率与一致性                          在计算机中,内存的读写与处理器的计算速度有几个级的差距.这样会严重影响 查看详情

jvmjava中的经典垃圾回收器

从不同角度分析垃圾收集器,可以将其划分为不同的模型。按线程数分,可以分为串行垃圾回收器和并行垃圾回收器;按照工作模式分,可以分为并发式垃圾回收器和独占式垃圾回收器;按碎片处理方式可分为压缩式垃圾回收器... 查看详情

深入浅知jvm(面试必备)

JVMJava虚拟机意义:跨平台把Java字节码转换成操作系统/CPU能够识别的二进制指令JVM区域内存划分堆方法区栈程序计数器JVM做的事情:类加载执行引擎(解释执行字节码)动态内存管理(申请内存/释放内存)... 查看详情

深入浅知jvm(面试必备)

JVMJava虚拟机意义:跨平台把Java字节码转换成操作系统/CPU能够识别的二进制指令JVM区域内存划分堆方法区栈程序计数器JVM做的事情:类加载执行引擎(解释执行字节码)动态内存管理(申请内存/释放内存)... 查看详情

干货:jvm堆内存和非堆内存

堆和非堆内存 按照官方的说法:“Java虚拟机具有一个堆(Heap),堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在Java虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heapmemory)”。 JVM主... 查看详情

内存堆内存和栈内存

栈内存编译器自己自动创建和释放(私有的,如函数参数,局部变量,临时变量)堆内存程序员自己创建和释放的(公有的)栈内存比堆内存访问速度快栈内存比堆内存容量小栈内存的生命周期短而堆内存在整个程序运行中都存... 查看详情

jvm堆内存及非堆内存配置

...,所以后面的其实都是JVM的参数了-Xms128mJVM初始分配的堆内存-Xmx512mJVM最大允许分配的堆内存,按需分配-XX:PermSize=64MJVM初始分配的非堆内存-XX:MaxPermSize=128MJVM最大允许分配的非堆内存 查看详情

栈内存和堆内存(代码片段)

栈内存和堆内存是什么?有什么用?栈内存、堆内存是什么?栈内存和堆内存都是存储数据的地方。为什么会分栈内存和堆内存??因为栈内存中存储的值的大小是固定的,堆内存中存储值的大小不固定的。基本数据类型目前有... 查看详情

java堆内存又溢出了!教你一招必杀技

JAVA堆内存管理是影响性能主要因素之一。堆内存溢出是JAVA项目非常常见的故障,在解决该问题之前,必须先了解下JAVA堆内存是怎么工作的。先看下JAVA堆内存是如何划分的,如图:JVM内存划分为堆内存和非堆内存,堆内存分为... 查看详情

jvm专题-堆(heap)(代码片段)

文章目录1.定义2.堆内存溢出3.堆内存诊断3.1.jmp诊断堆内存3.2.jconsole诊断堆内存3.3.jvisualvm诊断堆内存1.定义Heap堆通过new关键字,创建对象都会使用堆内存特点它是线程共享的,堆中对象都需要考虑线程安全的问题有垃圾回... 查看详情

内存管理相关api列表

...堆,包括堆的数量和各个堆的句柄HeapAlloc从指定堆上分配内存块HeapReAlloc重新分配内存,改变已经分配好的堆内存块的大小GetSystemInfo获取系统信息HeapSize获取指定堆的大小,以字节位单位返回堆大小信息HeapFree释放HeapAlloc和HeapReAlloc所... 查看详情

即使可用堆内存比使用的大得多,也会出现堆内存不足错误

】即使可用堆内存比使用的大得多,也会出现堆内存不足错误【英文标题】:GettingHeapoutofmemoryErrorevenwhenavailableheapmemoryismuchlargerthanused【发布时间】:2019-04-0201:47:46【问题描述】:即使我使用以下命令运行具有高堆内存的节点,... 查看详情

jvm--------jmap-----查看堆内存信息生成heapdump文件(转储堆内存快照到指定文件)

一、用jmap(MemoryMapforJava)查看堆内存信息 1.查看堆内存信息  命令:jmap-histopid 解析:可以打印出当前堆中所有每个类的实例数量和内存占用结果:  查看详情

[java]java的堆内存和栈内存解析--举例进行内存分析(代码片段)

[Java]Java的堆内存和栈内存解析–举例进行内存分析JavaJava的堆内存和栈内存解析举例进行内存分析明确概念堆内存Heap栈内存Stack两者联系实例说明代码流程分析内存分配策略静态内存分配栈式内存分配堆式内存分配参考资料明确... 查看详情

jvm中,如果把堆内存参数配置的超过了本地内存,会怎么样?

java内存可以分为堆内存和非堆内存:堆是给开发人员用的,是在JVM启动时创建;非堆是留给JVM自己用的,用来存放类型(类和接口)的信息。它和堆不同,运行期内GC不会释放空间。如果webapp用了大量的第三方jar或者应用有太多的c... 查看详情

jvm的堆内存和栈内存中存储的数值或类型的区别在哪里

基本类型变量的值和内容是一致的引用类型变量的值在堆内存,赋值的内容是一个地址,这个地址也在栈内存,指向堆内存引用类型变量的值是内存地址,内存地址在栈内存,指向堆;内容是实例,在堆内存引用类型变量时,栈内存存... 查看详情

#yyds干货盘点#java内存分析之堆内存和metaspace内存

Java内存分析之堆内存和MetaSpace内存常见的内存溢出问题(内存和MetaSpace内存)Java堆内存溢出Java堆内存(HeapMemory)主要有两种形式的错误:OutOfMemoryError:JavaheapspaceOutOfMemoryError:GCoverheadlimitexceededOutOfMemoryError:Javaheapspace在Java堆中只要不... 查看详情