zoukankan      html  css  js  c++  java
  • MyEclipse内存不足之JVM内存浅谈

    MyEclipse内存不足之JVM内存浅谈假如没有执行 配置的话,在运用 MyEclipse的经常出现如下图所示内存不足的提示。 
       
      MyEclipse内存不足之JVM内存浅谈图1 
      提示中说的很明白:“MyEclipse has detected that less than 5% of the 64MB of Perm Gen (Non-heap memory) space remains.”意思是说当前只有小于5%的非堆内存是空闲的。所以咱们只要将这个值配置大一些就可以了。 
      提示中给出了配置的参数: 
      -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:Maxp ermSize=128M 
      MyEclipse内存不足之JVM内存浅谈的多个疑问: 
      1. 各个参数的意思什么? 
      2. 为什么有的机器我将-Xmx和-XX:Maxp ermSize都配置为512M之后Eclipse可以启动,而有些机器无法 启动? 
      3. 为何将上面的参数写入到eclipse.ini文件Eclipse没有执行对应的配置 ? 
      下面咱们就MyEclipse内存不足之JVM内存一一对一些观点执行 回答 
      1. 各个参数的意思什么? 
      参数中-vmargs的意思是配置 JVM参数,所以后面的其实都是JVM的参数了,咱们最先明白一下JVM内存维护的机制,然后再解释每个参数代表的意思。 
      ◆堆(Heap)和非堆(Non-heap)内存 
      按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时建立的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM首要维护两种类型的内存:堆和非堆。基本来说堆就是Java代码可及的内存,是留给开发人员运用的;非堆就是JVM留给自己用的,所以要领区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和要领数据)以及要领和构造要领的代码都在非堆内存中。 
      ◆堆内存分配 
      JVM原始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限定 ;空余堆内存大于70%时,JVM会降低堆直到-Xms的最小限定。因此服务器通常配置 -Xms、-Xmx相等以防止在每次GC 后调整堆的大小。 
      ◆非堆内存分配 
      JVM运用 -XX:PermSize配置非堆内存原始值,默认是物理内存的1/64;由XX:Maxp ermSize配置最大非堆内存的大小,默认是物理内存的1/4。 

  • 相关阅读:
    Django基于form组件实现注册校验
    Django 框架概况
    【ARM】S5PV210芯片的启动流程
    【ARM】S3C6410芯片的启动流程
    Go's Declaration Syntax
    挺经
    软件系统最重要的一点
    Laravel 服务容器实例教程 —— 深入理解控制反转(IoC)和依赖注入(DI)
    你大概走了假敏捷:认真说说敏捷的实现和问题(手绘版)
    我的书单
  • 原文地址:https://www.cnblogs.com/yongwuqing/p/5038050.html
Copyright © 2011-2022 走看看