资讯专栏INFORMATION COLUMN

java除了堆和元空间占用内存外,还有哪些区域占用内存?

nanfeiyan / 2276人阅读

摘要:代码如果代码中使用调用本地库,那本地库使用的内存也不在堆中。虚拟机和虚拟机和的代码执行也要消耗一定的内存。

java除了堆和元空间占用内存外,还有哪些区域占用内存?
 1. Direct Memory:可以通过-XX:MaxDirectMemorySize调整大小,内存不足时抛出OutMemoryError或OutOfMemory:Direct buffer memory
 
 2. 线程堆栈:可通过-Xss调整大小,内存不足时抛出StackOverflowError(纵向无法分配,即无法分配新的栈帧)或OutOfMemoryError:uable to create new native thread(横向无法分配,即无法建立新的线程)

 3. Scoket缓存区:每个Socket连接都有Receive和Send两个缓存区,分别占大约37KB和25KB的内存,如果连接多的话,这块内存的占用也比较多,如果无法分配,则可能会抛出IOException:Too    many open file异常。

 4. JNI代码:如果代码中使用JNI调用本地库,那本地库使用的内存也不在堆中。

 5. 虚拟机和GC:虚拟机和GC的代码执行也要消耗一定的内存。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75545.html

相关文章

  • 方法区到底是个什么鬼

    摘要:那方法区里都存着什么呢先抛结论静态变量常量类信息构造方法接口定义运行时常量池存在方法区中。动态常量池运行时常量池是方法区的一部分,是一块内存区域。文件常量池将在类加载后进入方法区的运行时常量池中存放。 一、方法区与永久代 这两个是非常容易混淆的概念,永久代的对象放在方法区中,就会想当然地认为,方法区就等同于持久代的内存区域。事实上两者是这样的关系: 《Java虚拟机规范》只是规定了有方...

    binaryTree 评论0 收藏0
  • 万万没想到,JVM内存结构的面试题可以问的这么难?

    摘要:方法区在实际内存空间站可以是不连续的。这一规定,可以说是给了虚拟机厂商很大的自由。但是值得注意的是,堆其实还未每一个线程单独分配了一块空间,这部分空间在分配时是线程独享的,在使用时是线程共享的。 在我的博客中,之前有很多文章介绍过JVM内存结构,相信很多看多我文章的朋友对这部分知识都有一定的了解了。 那么,请大家尝试着回答一下以下问题: 1、JVM管理的内存结构是怎样的? 2、不同的...

    CloudwiseAPM 评论0 收藏0
  • 十种JVM内存溢出的情况,你碰到过几种?

    摘要:内存溢出的情况就是从类加载器加载的时候开始出现的,内存溢出分为两大类和。以下举出个内存溢出的情况,并通过实例代码的方式讲解了是如何出现内存溢出的。内存溢出问题描述元空间的溢出,系统会抛出。这样就会造成栈的内存溢出。 导言: 对于java程序员来说,在虚拟机自动内存管理机制的帮助下,不需要自己实现释放内存,不容易出现内存泄漏和内存溢出的问题,由虚拟机管理内存这一切看起来非常美好,但是一旦...

    ShevaKuilin 评论0 收藏0
  • 深度理解JVM-----运行时数据区域

    摘要:在之后,原来永久代的数据被分到了堆和元空间中。元空间存储类的元信息,静态变量和常量池等放入堆中。这样能在一些场景中显著提高性能,因为避免了在堆内存和堆外内存来回拷贝数据。 以下内容部分转载于: CS-Notes showImg(http://ww1.sinaimg.cn/large/005NT19Ply1g385uooqv9j30kd0slmyw.jpg); 程序计数器(Program...

    tuantuan 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<