精华内容
下载资源
问答
  • win7 exe 修改程序内存使用2G上限问题

    千次阅读 2016-07-21 15:11:52
    win7 下 exe 进程内存使用超过2GB,无法执行下去的解决方法,提高单进程内存分配上限

    修改步骤:


    1. “以管理员身份运行” cmd

    2. 输入引号内容“bcdedit /set IncreaseUserVa 4096” (将单进程内存的上限强制修改为4GB)

    展开全文
  • java -Xmxn 虚拟机内存使用上限上限

    千次阅读 2006-10-24 21:44:00
    设计开发软件,对于运行期系统资源的使用需要精打细算。java 程序在引入开发简易性的同时,也消耗了大量的系统资源。在开发 server 端程序时需要根据系统特点进行优化。最近的一个“自有平台” (java) 上开发的 web ...

    设计开发软件,对于运行期系统资源的使用需要精打细算。java 程序在引入开发简易性的同时,也消耗了大量的系统资源。在开发 server 端程序时需要根据系统特点进行优化。

    最近的一个“自有平台” (java) 上开发的 web 项目需要处理大量的数据。
    由于时间紧任务重(一贯如此),没有充分的时间优化代码(如此一贯),造成了几个简单的功能,诸如:上传文件、数据库查询结果转存等操作巨费内存。
    所以就从简单的手工设置划拨内存的方向解决问题。大家都知道 java 命令的 -Xmx n 参数 [1] 可以设置虚拟机可以使用的内存上限,默认值为 64M 。
    由于是开发 server 端项目,按照以往的经验,开始时设置到 -Xmx 512M 。遇到内存溢出异常 OutOfMemoryError 。先是设置成于 1024M ,看来是程序太差,还是溢出。
    于是想当然的就 -Xmx 2048M ,结果 vm 直接没法启动。
    原来,虚拟内存的设置还是有上限的。而这个东西在 java 文档上并没有特别的指出。
    通过一番艰苦卓绝的 G 路学习,得到一个大概地结论:在 32 位 windows 系统上,基于 sun 的虚拟机,基本就是 1.3 G [2] 是个比较合理的上限的样子。

    首先,作为 32 位 windows 系统,2G 的用户内存寻址空间,是个上限。然后刨去其他 Object Heap 之类的开销,大概是 1.3 G 剩余可用。

    从前,一直看 windows 版的参数说明[1]。其中,到目前为止,都没有提及这个事儿。今天看了 solaris 版的才知道,原来还是有说到一点点地。

    On Solaris 7 and Solaris 8 SPARC platforms, the upper limit for this value is approximately 4000m minus overhead amounts. On Solaris 2.6 and x86 platforms, the upper limit is approximately 2000m minus overhead amounts. On Linux platforms, the upper limit is approximately 2000m minus overhead amounts. 

    毕竟,sun 的 jvm 是免费的啦。大多数应用应该是够了。其他的 jvm 因为没了解,所以无从说起了。也许,差不了太多的。

     

    看来,内存使用效率的问题,仍旧是程序员的问题。

     

    参考:

    [1]
    java - the Java application launcher
    http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/java.html

    http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/java.html
    http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/java.html


    [2]
    http://www.unixville.com/~moazam/

    Why can't I allocate 2GB of heap to the JVM on Windows?
    http://www.unixville.com/~moazam/2004/06/03.html
    Why can't I allocate 2GB of heap to the JVM on Windows, Part 2
    http://www.unixville.com/~moazam/2005/03/13.html
     

    [3]
    http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4435069
    Hotspot on linux is restricted to a 2GB heap
    06-APR-2001

    [4]
    http://www.velocityreviews.com/forums/t132683-which-os-can-i-use-for-a-heap-larger-than-2g-linux-failed.html
    Java - which OS can I use for a heap larger than 2G (linux failed)

     

    展开全文
  • 当加载带有大量图片的列表时,通常我们都要考虑到图片达到一定上限时,内存不足引发OOM导致程序崩溃的问题。下一步也许就是去找个图片加载开源框架来一劳永逸。OOM不急着解决,先来了解下关于程序可用内存的一丢丢...

    当加载带有大量图片的列表时,通常我们都要考虑到图片达到一定上限时,内存不足引发OOM导致程序崩溃的问题。下一步也许就是去找个图片加载开源框架来一劳永逸。OOM不急着解决,先来了解下关于程序可用内存的一丢丢知识。在面对OOM的时候,你有没有想过这些: 

    1.什么是OOM 

    OOM都知道是Out Of Memory的缩写也就是内存溢出,通俗点说就是内存用完了。 

    2.为什么会OOM 

    内存使用超过上限导致了内存溢出。例如内存泄露,当程序运行过程中动态申请的内存空间不再使用但是又没有及时释放,从而导致应用程序内存持续增长,直到超过内存上限导致程序结束。 

    3.内存上限怎么查看?每个应用最大能够使用的内存大小都一致吗?如何去查看当前运行应用的内存使用情况? 

    这些就是接下来要说明的问题。是了解内存使用的开始。


    “我们都知道Android是个多任务操作系统,同时运行着很多程序,都需要分配内存,不可能为一个程序分配越来越多的内存以至于让整个系统 都崩溃,因此heap的大小有个硬性的限制,跟设备相关,从发展来说也是越来越大,G1:16MB,Droid:24MB,Nexus One:32MB,Xoom:48MB,但是一旦超出了这个使用的范围,OOM便产生了” 

    类似的描述在很多关于内存相关的blog都很容易看到。那么问题来了,


    一、一个程序被分配的内存大小怎么查看? 

    1.先来了解dalvik堆配置的三个属性 :

    • dalvik.vm.heapstartsize=8m:表示应用程序启动后,系统为其分配的初始大小。
    • dalvik.vm.heapgrowthlimit=64m:单个应用程序被分配的最大可用内存,即内存阀值。当应用程序的内存使用量超过这个阀值,就会引起OOM。
    • dalvik.vm.heapsize=256m:单个虚拟机可分配的最大内存。(每个应用程序都是在单个虚拟器中运行,为了避免单个进程崩溃导致整个系统的崩溃)单个应用可用最大内存以heapgrowlimit为准,如果想申请更大的内存,可以在manifest.xml的application标签中指定android:largeHeap为true,这样dvm heap最大可以达到heapsize,但如果内存使用量也超过了该值,同样会引起OOM发生。但是官方表示这个大内存专为一小部分需要消耗更多内存的应用程序,比如大图编辑类的app,千万不要因为oom了就去申请这个大内存。使用额外的内存会影响到用户体验,因为gc的操作时间会更长,性能也会下降。

    关于这几个属性的更全面的阐述移步:android dalvik heap 浅析Android 内存管理 &Memory Leak & OOM 分析


    2.程序可使用最大内存的查看方法

    接下来了解下查看/获取heapgrowthlimit和heapsize值的两种方法:

    第一种可以用文件管理器打开手机中的system/build.prop文件,这里配置dalvik虚拟机的一些属性:




    看到红色框框中熟悉的字眼是不是倍感亲切。这个文件是可编辑的。从这里也可以知道,不同设备,这些值可以是不一样的。“厂家针对设备的配置情况都会适当地修改/system/build.prop文件来调高这个值”。 


    第二种方法可以通过代码来获取内存阀值:

            ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
            //可用堆内存,单个应用可以使用的最大内存,如果应用内存使用超过这个值,就报OOM
            int heapgrowthlimit = manager.getMemoryClass();
            //进程内存空间分配的最大值,表示的是单个虚拟机可用的最大内存
            int heapsize = manager.getLargeMemoryClass();
            L.d("heapgrowthlimit = "+heapgrowthlimit+"m"+", heapsize = "+heapsize+"");

    了解了一个应用程序最大可使用内存的真面目后,来看看: 

    二、如何查看运行时内存的使用情况? 
    可以借助DDMS中提供的内存监测工具Heap,来监测一个进程的内存变化: 



    在左面板选中当前运行程序的进程,然后点击“Update Heap”图标,那么右侧面板会显示当前进程的内存使用情况。 

    • Heap Size:当前应用程序所占用的堆内存大小(Heap Size = Allocated +Free)
    • Allocated:表示当前活跃对象占用的内存大小
    • Free:表示系统通过gc操作释放了多少内存
    • % Used:当前内存的使用比例(= Allocated/Heap Size)

    在上一篇实现一个最简单图片列表引发的问题 里,实现了一个图片列表,当我们不断滑动列表去进行图片加载时时候,在DDMS中观察到Heap Size的大小并不是保持在一个合理的范围,而是持续上升的,当达到最大内存使用上限比如64m的时候,程序就出现了OOM。 
    可以通过亲测程序去观察下这些参数的变化。


    参考:

    Managing Your App's Memory

    Android最佳性能实践(二)——分析内存的使用情况

    android dalvik heap 浅析

    Android 内存管理 &Memory Leak & OOM 分析

    manifest中的largeHeap是干什么用的

    Android OOM-调整Heap大小



    展开全文
  • WINDOWS 单个程序配置内存上限命令。

    千次阅读 2013-02-03 15:16:34
    bcdedit /set IncreaseUserVa 4096

    bcdedit /set IncreaseUserVa 4096

    展开全文
  • 关于VS编译的程序 内存分配只能用1.5~2G上限的优化方案 遇到的问题是这样的: 电脑内存32G,VS2012编译的一个程序,在程序运行过程中,一旦程序的内存使用达到1.5G,就会抛出内存溢出(outofmomery)异常,然后...
  • 内存分析工具MAT的使用

    千次阅读 2016-09-23 13:09:15
    原文链接:http://www.jianshu.com/p/d8e247b1e7b2MAT简介MAT(Memory Analyzer ...使用内存分析工具从众多的对象中进行分析,快速的计算出在内存中对象的占用大小,看看是谁阻止了垃圾收集器的回收工作,并可以通过报表
  • 再议Hyper-V 动态内存管理和内存过量使用  实际操作中,慢慢成长起来的经验将会成为一份可遇而不可求的金玉。几年前,坚信虚拟化将会让我们的IT运维变得随心所欲,到现在我反而发现了这项全新业务的管理让我们常常...
  •   Android app运行在vm上,而Android系统对vm heapsize做了一个硬性逻辑限制,就算物理内存富余,如果应用超出APP逻辑内存,APP就会出现内存溢出crash。    由程序控制操作的内存空间在heap上,分java heapsize...
  • win32程序使用内存

    千次阅读 2018-01-18 21:28:04
    程序所能请求内存上限,默认是2G,于是有两种方法。 一种是将环境改为X64。但是用了一些X86的dll,在x64的模式下运行就还会抛出内存溢出异常的。 另一种就是修改工程属性,启用大地址。如下图: 最后问题完美...
  • 高性能网络编程7--tcp连接的内存使用

    万次阅读 多人点赞 2014-01-23 17:47:28
    当服务器的并发TCP连接数以十万计时,我们就会对一个TCP连接在操作系统内核上消耗...在用抓包软件抓到的syn握手包里,为什么TCP接收窗口大小似乎与这些配置完全没关系?这篇文章将为应用程序开发者系统描述TCP的内存
  • Linux之内存使用限制

    千次阅读 2016-03-25 09:27:33
    在我们使用Linux的过程中,对某个用户或进程做内存使用限制是很常见的事情。通常我们有两种办法:1、ulimit中-m参数,limits.conf里面配置;在limits.conf中,我们很容易找到rss是和内存相关的,但细心的同学会发现...
  • 64位系统能使用多少内存

    万次阅读 多人点赞 2016-12-30 22:21:34
    疑问我们知道32位win7一般只能使用4GB内存,原因是如果按照地址宽度是32bit(其实并不是)来算的话系统最多只能管理2322^{32}字节的内存(通过补丁的方式可以使32位win7突破4GB的限制,关键词:ReadyFor4GB,后面我会讲...
  • 前言由于我不是开发者,所以写这个题目的时候总有些惶恐,怕写出问题,本文内容是笔者通过论坛的学习和自己实践总结出来的一些经验,可能有不对的地方还望指正。...这些保留在内存中的进程通常情况下不会影
  • 应用软件系统内存限制

    千次阅读 2010-02-03 14:56:00
    申请不到吧,因为64为系统在运行32位程序的时候...因此申请8G的空间是没啥意义的,而且一般系统都会为每个进程设置一些资源限制,对于32位程序其能申请的内存量也远远小于4G可以看一下下面这个表操作系统内部数据结构限
  • 内存泄漏检查工具valgrind使用方法

    千次阅读 2015-07-21 09:13:47
    实际上,内存管理的问题是软件中最为常见的 bug,因为通常在程序启动时这些问题并不明显。例如,程序中的内存泄漏可能开始并不为人注意,直到经过多天甚至几个月的运行才会被发现。接下来的几节将简要介绍如何使用...
  • 项目中常常需要将中间结果进行保存, 以供后续步骤进行处理. 如果以临时文件的方式往往容易"暴露"中间机密信息. 同时,文件IO读写也较浪费... 面对上面情况,本人想到了内存机制: 如果中间结果数据不超过2G(32位windo
  • 启动后,可用内存在50-100左右,但随着手机的使用,可用内存会逐步减少,最后降低到24MB左右,则系统开始启动进程管理机制,开始结束进程,但这个阀限制设在了24MB,相对来说偏低。其结果会导致系统使用一段 时间 后...
  • Heap内存分析工具和MAT 的使用

    千次阅读 2016-07-20 09:49:04
    转自:... 1 内存泄漏的排查方法 ...Dalvik Debug Monitor Server (DDMS) 是 ADT插件的一部分,其中有两项功能可用于内存检查 : · heap 查看堆的分配情况 · allocation tracker
  • 高性能网络编程7----tcp连接的内存使用
  • vs解除x86程序内存限制

    千次阅读 2019-09-05 21:47:43
    在x86对应的c++程序中会对内存进行上限设置,一般不会超过2GB的大小,内存占用过大时,会造成程序的崩溃。当然内存的管理优化非常重要,但是我们有时进行大量的数据分析与处理时,会需要更多的内存。 以前一直是...
  • TCP连接过程中的内存使用问题

    千次阅读 2015-05-21 16:25:31
    tcp连接的内存使用 分类: linux 技术分享2014-01-23 17:47 9858人阅读 评论(17) 收藏 举报 tcpmemorykernel缓存linux 当服务器的并发TCP连接数以十万计时,我们就会对一个TCP连接在操作系统内核...
  • 早上医院反应,PACS系统业务特别慢,登上服务器看内存已经使用了31.8G(32G的内存),打开任务管理器看 占用最多的是sqlserver.exe 大约8G 其他进程最大的也就IIS的进程,都没超过1G,加起来肯定到不了31.8G ...
  • 转载请标明出处:http://blog.csdn.net/xx326664162/article/details/49949833 文章...Android Device Monitor分析heapAndroid Device Monitor分析heap的总内存占用大小来初步判断是否存在泄露 Android Device Monit
  • 如果你现在认真做任何数据驱动的事情,那么强大的PC是必须拥有的。数据科学往往需要很多RAM...你有足够的内存或你的内存使用量溢出到swap中(磁盘内存,非常慢)吗? 你的CPU或GPU运行得太热吗?英特尔CPU和Nvidia ...
  • Windows Server 2008 R2服务器内存使用率过高,但与任务管理器中进程占用内存和不一致 原文:Windows Server 2008 R2服务器内存使用率过高,但与任务管理器中进程占用内存和不一致 系统环境: Windows...
  • c#如何限制程序内存使用的大小

    千次阅读 2012-05-21 17:52:35
     c#虽然内置垃圾回收机制,但是并不能解决程序占用内存庞大的问题,如果我们仔细观察任务管理器,我们会发现一个程序如果最小化的时候,它所占用的会骤然减小,这时操作系统会把程序用不到的内存暂时放到虚拟内存中...
  • ArrayList集合容量有上限吗?

    万次阅读 2015-10-08 14:34:56
    讨论ARRAYLIST数组容量上限,以及自动增加长度的原理。
  • 手机内存

    千次阅读 2013-07-26 11:03:29
    手机内存卡可以用来存储歌曲,电影,电子书,游戏软件等数据信息。现在市面上常见的内存卡分为MMC、SD、MiniSD、Memory Stick、SM等几种。 查看精彩图册 目录 MMC 卡 SD 卡 miniSD 卡 Memory Stick

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 34,050
精华内容 13,620
关键字:

内存软件使用上限