热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JVM运行时数据区总结栈堆堆大小配置总结

1.程序计数器线程私有当前线程所执行的字节码的行号指示器2.虚拟机栈线程私有存:Java方法(局部变量表(基本数据类型)、操作数栈、动态链栈、方法出口)StackOverflo

1. 程序计数器

  线程私有

  当前线程所执行的字节码的行号指示器

2. 虚拟机栈

  线程私有

  存:Java方法(局部变量表(基本数据类型)、操作数栈、动态链栈、方法出口)

  StackOverflowError 栈深度大于虚拟机所允许的深度

  OutOfMemoryError 无法满足内存分配

3. 本地方法栈

  线程私有

  存:Native方法

  与虚拟机栈相似

  StackOverflowError 栈深度大于虚拟机所允许的深度

  OutOfMemoryError 无法满足内存分配

4. 堆 

  线程共享

  对象实例,新生代 老年代

  堆大小设置

  -Xmx 设置JVM最大可用内存

  -Xms 设置JVM初始堆大小

  -Xmn 设置新生代大小。持久代一般固定大小为64m,所以增大新生代后,将会减小老年代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8

  -Xss  设置每个线程的堆栈大小

  整个JVM内存大小=新生代大小 +老年代大小 + 持久代大小。

  -XX:NewSize=n: 设置新生代大小

  -XX:NewRatio=n: 设置新生代和老年代的比值。如:为3,表示新生代与老年代比值为1:3,新生代占整个新生代老年代和的1/4

  -XX:SurvivorRatio=n: 新生代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5

  新生代:Eden空间、From Survivor空间、To Survivor空间

  -XX:MaxTenuringThreshold=n:设置垃圾最大年龄。如果设置为0的话,则新生代对象不经过Survivor区,直接进入老年代。对于老年代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则新生代对象会在Survivor区进行多次复制,这样可以增加对象在新生代的存活时间,增加在新生代即被回收的概论。

  -XX:MaxPermSize=n: 设置持久代大小

  OutOfMemoryError 无法满足内存分配

  参考:JVM调优总结 -Xms -Xmx -Xmn -Xss

5. 方法区

  线程共享 Non-Heap 非堆 熟称“持久代”

  存:已被加载的类信息、常量、静态变量、即时编译器编译后的代码等数据

  -XX:MaxPermSize=n:  设置持久代大小

  OutOfMemoryError 无法满足内存分配

5.1 运行时常量池 

  Class文件中除了有类的版本、字段、方法、接口等描述信息外,还有一项信息是常量池,用于存放编译期生成的各种字面量和符号引用,这部分内容将在类加载后进入方法区的运行时常量池中存放。

  String.intern()方法

  OutOfMemoryError 无法满足内存分配

6. 直接内存

  JDK1.4新加入了NIO(NIO参考 Java NIO 学习总结 学习手册),引入了一中基于通道(Channel)与缓冲区(Buffer)的I/O方式,它可以使用Native函数库直接分配堆外内存,然后通过一个存储在Java堆中的DirectByteBuffer对象作为这块内存的引用进行操作。

  本机直接内存的分配不会受到Java堆大小的限制,会受到本机总内存(包括RAM以及SWAP区或者分页文件)大小以及处理器寻址空间的限制。

  OutOfMemoryError 无法满足内存分配


推荐阅读
  • 初识java关于JDK、JRE、JVM 了解一下 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • JVM:33 如何查看JVM的Full GC日志
    1.示例代码packagecom.webcode;publicclassDemo4{publicstaticvoidmain(String[]args){byte[]arr ... [详细]
  • jvm内存区域与溢出为什么学习jvm木板原理,最短的一块板决定一个水的深度,当一个系统垃圾收集成为瓶颈的时候,那么就需要你对jvm的了解掌握。当一个系统出现内存溢出,内存泄露的时候 ... [详细]
  • Python中程序员的面试题有哪些
    小编给大家分享一下Python中程序员的面试题有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
  • 本文整理了Java面试中常见的问题及相关概念的解析,包括HashMap中为什么重写equals还要重写hashcode、map的分类和常见情况、final关键字的用法、Synchronized和lock的区别、volatile的介绍、Syncronized锁的作用、构造函数和构造函数重载的概念、方法覆盖和方法重载的区别、反射获取和设置对象私有字段的值的方法、通过反射创建对象的方式以及内部类的详解。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • Python已成为全球最受欢迎的编程语言之一,然而Python程序的安全运行存在一定的风险。本文介绍了Python程序安全运行需要满足的三个条件,即系统路径上的每个条目都处于安全的位置、"主脚本"所在的目录始终位于系统路径中、若python命令使用-c和-m选项,调用程序的目录也必须是安全的。同时,文章还提出了一些预防措施,如避免将下载文件夹作为当前工作目录、使用pip所在路径而不是直接使用python命令等。对于初学Python的读者来说,这些内容将有所帮助。 ... [详细]
  • 介绍平常在多线程开发中,总避免不了线程同步。本篇就对net多线程中的锁系统做个简单描述。目录一:lock、Monitor1:基础 ... [详细]
author-avatar
手机用户2502876011
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有