精华内容
下载资源
问答
  • 需求1:跑sql内存不够用 虽然知道怎么,但是对这几个配置一直是模糊不清晰,所以特意在下面写下,我所知道的。 需求2:Eclipse崩溃,错误提示: MyEclipse has detected that less than 5% of the 64MB of...

    需求1:跑大sql内存不够用

    虽然知道怎么改,但是对这几个配置一直是模糊不清晰,所以特意在下面写下,我所知道的。

    需求2:Eclipse崩溃,错误提示:
    MyEclipse has detected that less than 5% of the 64MB of Perm 
    Gen (Non-heap memory) space remains. It is strongly recommended
    that you exit and restart MyEclipse with new virtual machine memory
    paramters to increase this memory.   Failure to do so can result in
    data loss. The recommended Eclipse memory parameters are: 
    eclipse.exe -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M
     


    1.参数的含义

    -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M
    -vmargs 说明后面是VM的参数,所以后面的其实都是JVM的参数了
    -Xms128m JVM初始分配的内存
    -Xmx512m JVM最大允许分配的内存,按需分配
    -XX:PermSize=64M JVM初始分配的非堆内存
    -XX:MaxPermSize=128M JVM最大允许分配的非堆内存,按需分配

    我们首先了解一下JVM内存管理的机制,然后再解释每个参数代表的含义。


    1)堆(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 后调整堆的大小。说明:如果-Xmx 不指定或者指定偏小,应用可能会导致java.lang.OutOfMemory错误,此错误来自JVM,不是Throwable的,无法用try...catch捕捉。 


    非堆内存分配


     JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。(还有一说:MaxPermSize缺省值和-server -client选项相关,-server选项下默认MaxPermSize为64m,-client选项下默认MaxPermSize为32m。这个我没有实验。)
     上面错误信息中的PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。还没有弄明白PermGen space是属于非堆内存,还是就是非堆内存,但至少是属于了。
    XX:MaxPermSize设置过小会导致java.lang.OutOfMemoryError: PermGen space 就是内存益出。 
    说说为什么会内存益出: 
    (1)这一部分内存用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和存放Instance的Heap区域不同。 
    (2)GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS 的话,就很可能出现PermGen space错误。
      这种错误常见在web服务器对JSP进行pre compile的时候。  


    2)JVM内存限制(最大值)


     首先JVM内存限制于实际的最大物理内存,假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。简单的说就32位处理器虽然可控内存空间有4GB,但是具体的操作系统会给一个限制,
     这个限制一般是2GB-3GB(一般来说Windows系统下为1.5G-2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制了。

     

    问题及解决:

    1. 为什么有的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动,而有些机器无法启动?
     通过上面对JVM内存管理的介绍我们已经了解到JVM内存包含两种:堆内存和非堆内存,另外JVM最大内存首先取决于实际的物理内存和操作系统。所以说设置VM参数导致程序无法启动主要有以下几种原因:
    1) 参数中-Xms的值大于-Xmx,或者-XX:PermSize的值大于-XX:MaxPermSize;
    2) -Xmx的值和-XX:MaxPermSize的总和超过了JVM内存的最大限制,比如当前操作系统最大内存限制,或者实际的物理内存等等。说到实际物理内存这里需要说明一点的是,
     如果你的内存是1024MB,但实际系统中用到的并不可能是1024MB,因为有一部分被硬件占用了。

    2. 为何将上面的参数写入到eclipse.ini文件Eclipse没有执行对应的设置?
     那为什么同样的参数在快捷方式或者命令行中有效而在eclipse.ini文件中是无效的呢?这是因为我们没有遵守eclipse.ini文件的设置规则:
    参数形如“项 值”这种形式,中间有空格的需要换行书写,如果值中有空格的需要用双引号包括起来。比如我们使用-vm C:/Java/jre1.6.0/bin/javaw.exe参数设置虚拟机,
    在eclipse.ini文件中要写成这样:
    -vm 
    C:/Java/jre1.6.0/bin/javaw.exe 
    -vmargs 
    -Xms128M 
    -Xmx512M 
    -XX:PermSize=64M 
    -XX:MaxPermSize=128M 
    实际运行的结果可以通过Eclipse中“Help”-“About Eclipse SDK”窗口里面的“Configuration Details”按钮进行查看。
    另外需要说明的是,Eclipse压缩包中自带的eclipse.ini文件内容是这样的:
    -showsplash 
    org.eclipse.platform 
    --launcher.XXMaxPermSize 
    256m 
    -vmargs 
    -Xms40m 
    -Xmx256m 
    其中–launcher.XXMaxPermSize(注意最前面是两个连接线)跟-XX:MaxPermSize参数的含义基本是一样的,我觉得唯一的区别就是前者是eclipse.exe启动的时候设置的参数,
    而后者是eclipse所使用的JVM中的参数。其实二者设置一个就可以了,所以这里可以把–launcher.XXMaxPermSize和下一行使用#注释掉。

    3. 其他的启动参数。 如果你有一个双核的CPU,也许可以尝试这个参数:
    -XX:+UseParallelGC
    让GC可以更快的执行。(只是JDK 5里对GC新增加的参数)

    补充:
      如果你的WEB APP下都用了大量的第三方jar,其大小超过了服务器jvm默认的大小,那么就会产生内存益出问题了。
    解决方法: 设置MaxPermSize大小 
    可以在myelipse里选中相应的服务器比如tomcat5,展开里面的JDK子项页面,来增加服务器启动的JVM参数设置:
    -Xms128m 
    -Xmx256m 
    -XX:PermSize=128M 
    -XX:MaxNewSize=256m 
    -XX:MaxPermSize=256m
    或者手动设置MaxPermSize大小,比如tomcat,
    修改TOMCAT_HOME/bin/catalina.bat,在echo "Using CATALINA_BASE: $CATALINA_BASE"上面加入以下行: 
    JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m

    建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以减少jar 文档重复占用内存

    展开全文
  • linux内存不够用怎么办

    千次阅读 2017-11-24 16:32:13
    结果在安装需要大量内存的软件的时候 内存不够用了 linux自动杀死了这个安装过程…. 解决方案 : 创建 swap 分区 1 创建文件夹 mkdir /developer/2设置交换分区大小 dd if=/dev/zero of=/developer/swap bs=2048 ...

    刚接触服务器的时候 什么都不懂 于是便买了台阿里最低配的服务器
    结果在安装需要大量内存的软件的时候 内存不够用了 linux自动杀死了这个安装过程….
    解决方案 : 创建 swap 分区
    1 创建文件夹 mkdir /developer/

    2设置交换分区大小 dd if=/dev/zero of=/developer/swap bs=2048 count=2048000

    3创建交换分区 mkswap /developer/swap

    4启动交换分区 swapon /developer/swap

    5若要想使开机时自启用,则需修改文件/etc/fstab中的swap行 /whatever/swap swap swap defaults 0 0

    6 查看创建好的分区 free -m

    会看到swap 有数字了
    再去执行安装操作 就OK了

    展开全文
  • 当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些...

    当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。这个是SWAP 交换分区的作用。

    系统中交换分区的大小并不取决于物理内存的量,而是取决于系统中内存的负荷,所以在安装系统时要根据具体的业务来设置SWAP的值。其实虚拟内存并不是等到物理内存用尽了才使用的,是否尽量的使用或不使用swap,在内核空间有一个参数控制。

    # cat /proc/sys/vm/swappiness
    60

    表示默认的swappiness的值为60。换而言之,当swap空间使用达到60%的时候,开始释放物理内存中的cache/buffers。swappiness=0 的时候表示最大限度使用物理内存,然后才是swap空间;swappiness=100 的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。

    现在服务器的内存动不动就是上百G,所以我们可以把这个参数值设置的低一些,让操作系统尽可能的使用物理内存,降低系统对swap的使用,从而提高系统的性能。例如

    # echo 10 > /proc/sys/vm/swappiness

    或者

    # sysctl vm.swappiness=10
    vm.swappiness = 10
    # cat /proc/sys/vm/swappiness
    10

    这表明修改已经生效。但是如果我们重启了系统,它又会变成60。为了让我们的修改长久有效,可以修改配置文件/etc/sysctl.conf:

    # echo 'vm.swappiness=10' >>/etc/sysctl.conf

    为了让它即时生效,可执行:

    # sysctl -p

    重新载入配置文件。 

    目前Red Hat(红帽官方)推荐交换分区的大小应当与系统物理内存的大小保持线性比例关系。不过在小于2GB物理内存的系统中,交换分区大小应该设置为内存大小的两倍,如果内存大小多于2GB,交换分区大小应该是物理内存大小加上2GB。其原因在于,系统中的物理内存越大, 对于内存的负荷可能也越大。但是,如果物理内存大小扩展到数百GB,这样做就没什么意义了。

    最近,在Gentoo中编译webkit-gtk-1.10.2-r300,辛辛苦苦编译了几个小时,结果报错:

    collect2: ld termiinated with signal 9 [Killed]

    通过Google搜索,发现这是由于编译过程中机器的内存耗尽引起的。这就是说解决问题的办法是增加内存。不过加物理内存是远水,解不了近火。既然Linux中的交换分区也是内存的一部分,于是不妨尝试增加交换分区。 这又让我们想起了红帽官方对于交换分区的建议:Linux系统交换分区最适合的大小是物理内存的1-2倍。可是谁又会在分区的时候记得这些呢?不过由于Linux允许文件系统中存在多个交换分区或者交换分区文件,所以亡羊补牢、为时未晚。如果我们的磁盘空间还尚有空余没有划分,那么我们可以直接利用分区工具再分出一个交换分区。倘若你像我一样,所有空间都已经被划分完了,那么只剩一招了—使用交换分区文件。下面我们主要来说说如何利用交换分区文件扩大分区。

    首先,需要制作交换分区文件。考虑到我的老机器已有的物理内存是1G、现有交换分区大小是500M。为了我们的编译过程顺利完成,不妨考虑交换分区文件的大小为1G。为此,执行下述命令:

    $ sudo dd if=/dev/zero of=/var/tmp/swap bs=1k count=1024000

    记录了1024000+0 的读入

    记录了1024000+0 的写出

    1048576000字节(1.0 GB)已复制,5.07655 秒,207 MB/秒

    它将在/var/tmp路径创建一个名为swap、大小为1G的分区文件,该分区文件拥有1024000个扇区(block),每个扇区大小为1K。接着,再把这个分区文件格式化为交换分区格式:

    $ sudo mkswap /var/tmp/swap

    随后,将它挂载到文件系统:

    $ sudo swapon /var/tmp/swap

    如果想要确认交换分区是否挂载成功,可执行:

    $ swapon -s 
    Filename      Type      Size    Used  Priority
    /dev/sda1     partition 511996  16192 ?1
    /var/tmp/swap file      1023996 0     ?2

    从显示结果来看,我们确实看到了文件格式交换分区被加载。如果还想要查看系统内存情况,只需执行:

    $ free -m
           total       used free shared buffers cached
    Mem:   995         935  60   0      6       551
    -/+ buffers/cache: 376  618
    Swap:  1499        15   1484

    通过扩大swap区,可以正常将webkit-gtk-1.10.2-r300编译完。实际上,用top跟踪webkit-gtk-1.10.2-r300的编译过程,会发现整个编译过程所需要的内存大概在2G左右。而我们通过增加交换分区的大小,总获得了2.5G左右的内存空间。编译完之后,如果我们不再需要这一块交换分区文件,那么可以先卸载再删除它:

    $ sudo swapoff /var/tmp/swap
    $ sudo rm -rf /var/tmp/swap

    倘若我们仍希望交换分区文件为以后的编译提供便利,那么可以选择保留它。不过在使用它之前必须先挂载它,因为一旦重启,原先的挂载便会失效!若要让我们的交换分区文件随机器启动自动挂载,则可修改/etc/fstab文件,例如作如下设置:

    $ cat /etc/fstab | grep -i swap
    /dev/sda1     none swap sw       0 0
    /var/tmp/swap swap swap defaults 0 0
    展开全文
  • eclipse 内存不够用报错Internal Error

    千次阅读 2016-10-14 17:23:27
    eclipse 内存不够用报错Internal Error 2014-08-11 14:55 8760人阅读 评论(1) 收藏 举报  分类: android(13)  版权声明:本文为博主原创文章,未经博主允许不得转载。 由于...
     

    eclipse 内存不够用报错Internal Error

     8760人阅读 评论(1) 收藏 举报
     分类:


    由于项目工程比较大,最近使用eclipse常常出现内存溢出的报错,运行的时候eclipse 就通过不了,报错,好不容易解决了。 
    eclipse报错如下: 
    1.
    Internal Error 
    An out of memory error has occurred.Consult the "Running Eclipse" section of the read me file for information on preventing this kind of error in future. 
    You are recommended to exit the workbench. 
    Subsequent errors may happen and may terminate the workbench without warning. 
    See the .log file for more details.






    另外还有一些报错: 
    unable to create new native thread. 
    Unhandled event loop exception. 
    java.lang.OutOfMemoryError.






    An internal error occurred during: "Searching for markers".
    Java heap space


    Internal Error
    Java heap space




    An internal error has occurred.

    Java.lang.NullPointerException




    方法是:找到安装目录中的eclipse.ini 文件,修改内存设置的部分: 
    -Xms40m 
    -Xmx512m


    启动ecplise时,单击ecplise标图 右键-》属性-》快捷方式-》目标 里面加-clean  -vmargs -Xms512m -Xmx800m -XX:PermSize=256m 
    例如F:ecplise-YouYuneclipse3.2eclipse2.0 -clean  -vmargs -Xms512m -Xmx800m -XX:PermSize=256m 。启动eclipse就可以了


    展开全文
  • X395修改内存可用内存大小

    千次阅读 2020-08-29 11:43:05
    1:进入BIOS 2.选择Config 3.选择Display ...修改为128M之后,看视频打开几个网页专用内存就占满了。剩余资源使用的是共享GPU内存。 之前使用的X230的专用显存只有32M,使用也没遇到什么问题。 ...
  • 刚在centos 7上安装Nacos 时启动,发现报错了,看了报错信息,是启动内存不够,我们打开启动脚本查看了一下 standalone代表着单机模式运行,非集群模式 Xms 是指设定程序启动时占用内存大小 Xmx 是指设定程序...
  • idea导入(open)比较的Java项目时,启动报内存溢出错误,加载依赖不成功,主POM中存在错误,导致服务启动失败: Error:java: java.lang.OutOfMemoryError: GC overhead limit exceeded 该问题是由于idea为JVM分配...
  • Eclipse修改jvm虚拟机内存大小

    千次阅读 2017-07-07 15:19:44
    本地需要跑10万条文章数据,去除文章相似度百分之八十的文章,放进list集合中遍历内存不够,需要修改运行内存,笔记本跑了12个小时没发生错误,没什么问题: 修改成: -Xms1024m -Xmx1024m 如果内存不够,运行时...
  • php内存不够用解决方法。

    千次阅读 2013-05-01 12:57:58
    Allowed memory size of 8388608 bytes exhausted (tried to allocate 1298358 bytes) 出现该错误的原因:在确保不是程序产生的原因(例如死循环),是由于php...如果文件太 或图片太 在读取的时候 会发生上
  • 1、修改eclipse.ini  在Myeclipse安装目录下G:\MyEclipse8.5\Genuitec\MyEclipse 8.5有一个myeclipse.ini配置文件,设置如下:  -vmargs -Xmx512m -XX:MaxPermSize=256m -XX:ReservedCodeCacheSize=64m 2...
  • 有时候IntelliJ IDEA执行部署启动服务或者到处junit测试报告,结果无法正常执行,这时候你会发现IntelliJ IDEA 提醒你内存不够,这时候就要重新设置一下了。 比较简单,这里记录下,免得忘记了,方便查阅。 1、...
  • clickhouse 内存不够

    千次阅读 2020-07-06 16:21:21
    填坑:修改users.xml配置文件之 set max_bytes_before_external_group_by=20000000000; #20G set max_memory_usage=40000000000; #40G 参数解析:默认情况下,ClickHouse会限制group by使用的内存量(它使用hash ...
  • 修改gephi最大内存的方法

    千次阅读 2019-04-04 13:38:14
    1.找到gephi的安装文件。 2.打开根目录下etc/gehi.conf 3将如下代码: command line switches ...default_options=“–branding gephi -J-Xms64m -J***-Xmx512m*** -J-Xverify:none -J-...如修改为-J-Xmx1024m.
  • MATLAB 内存容量修改

    千次阅读 2015-03-17 10:29:30
    MATLAB做图像处理时 经常会碰到内存溢出的情况,可用如下方法修改,使得MATLAB...Java虚拟机内存不够用了.可以增加最大内存设置. 1. 查找matlab根路径.在matlab命令行中敲入:matlabroot 显示根路径,如:C:\MATLAB7
  • 首先,在网络更深或者训练时批量更时,更容易出现out of memory的情况。 因此,在模型参数初始化完成后,我们交替地进⾏正向传播和反向传播,并根据反向传播计算的 梯度迭代模型参数。既然我们在反向传播中使⽤了...
  • 内存不够用,启动不了MySQL

    千次阅读 2010-09-10 10:06:00
    今天重启测试环境的MySQL,总是报错:   [root@XXXX etc]# /etc/init.d/mysql restart MySQL manager or server PID file could not be found!...把“innodb_buffer_pool_size”小,重启就可以了。
  • 创建maven,提示我内存不够,然后我去修改eclipse.ini虚拟内存大小,结果启动myeclipse又报"failed create the java virtual machine”,已经陷入死循环当中了。 在线等,急
  • 内存远远不够 首先要关闭docker, 否则下面的操作步骤会无效!! service docker stop 2. 进入宿主机中修改Host.json /var/lib/docker/containers ls 查看你的docker容器的id: docker ps 之后进入该文件的配置...
  • 数据量太内存不够怎么办?

    千次阅读 2019-06-26 16:36:00
    先看第一个,keras,可能需要网络什么的,不太想(先挖个坑,以后学一下keras,小白一只,勿怪) 第二个,pipeline,听起来高大上也很专业,上网搜罗了一堆资料: https://www.cnblogs.com/zyly/p/8982335.html ...
  • linux下修改JVM内存的大小

    千次阅读 2019-07-03 17:07:18
    常见的内存溢出有以下两种: java.lang.OutOfMemoryError: PermGen space java.lang.OutOfMemoryError: Java heap space 这里以tomcat环境为例,其它WEB服务器如jboss,weblogic等是同一个道理。 一、java.lang....
  • 前面运行bag of words的例子碰到了内存不够用,我的内存是2g的,虚拟内存设置了6g,大概系统了2.5g内存时,在new的时候就出现了badalloc错误,试着在boot。ini 里设置了3gb参数,也没用。 只有试着安装个64位的...
  • Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存不够的,需要调。有以下几种方法可以选用:     第一种 环境myeclipse修改 在菜单window->preferecces.在JDK对话框中输入-Xms512...
  • weka内存不够

    千次阅读 2012-04-08 13:35:00
     最近发现一个更好的解决方法,进入weka安装目录找到 RunWeka.ini,将maxheap=128m为400m,这样超级方便的O(∩_∩)O~,解决了我内存不够和在下面复杂情况下libsvm不了的情况,苦思冥想了许久都没找到解决方法,...
  • 版权声明:本文为博主原创文章,未经博主允许不得转载。 [csharp] view plain copy print?...Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存不够的,需要调。有以下几种
  • 1,root手机,授权管理,下载分区工具(推荐PQ9.0.rar,下载地址:...3.在电脑上格式化sd卡,上面下的分区工具将sd卡分成两个分区:
  • 在虚拟机安装的ubuntu中通过np.zeros创建一个[65000, 10000] 的numpy矩阵时报错了,原因时申请不了这么的空间,解决方法如下。 输入cat /proc/sys/vm/overcommit_memory,查看过载处理模式 如果是0的话,输入su ...
  • 修改Tomcat使用的JVM内存大小

    万次阅读 2015-09-08 14:16:48
    我的服务器的配置:  # OS specific support. $var _must_ be set to either true or false. JAVA_OPTS="-Xms1024m -Xmx4096m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=...常见的内存溢出有以下两种: java.l

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 225,833
精华内容 90,333
关键字:

内存不够用怎么改大