精华内容
下载资源
问答
  • 手动扩大内存

    2017-08-07 16:59:51
    我们都知道,如果代码里有 递归函数 频繁调用, 用 C++ 提交代码, 很可能就会 出现  Runtime Error (ACCESS_VIOLATION)  但是用G++提交,如果数据量很多的话,又会出现  Time Limit Exceeded 那怎么办呢?...

    还在因为 怕 g++ 提交时间很慢,但是用C++ 交又怕栈溢出???

    我们都知道,如果代码里有 递归函数 频繁调用, 用 C++ 提交代码, 很可能就会 出现

         Runtime Error           
    (ACCESS_VIOLATION)
     

    但是用G++提交,如果数据量很多的话,又会出现

      Time Limit Exceeded

    那怎么办呢???


    呵呵,G++的话可以用输入加速外挂啦~~~,以前我介绍过的。 


    同样的C++也可以防止栈溢出!!!


    只要在你的代码里加上下面这句话, OK,栈溢出直接搞定!!!

    #pragma comment(linker, "/STACK:102400000,102400000")


    让 Accepted 不是梦想!!!

    展开全文
  • 随手小记:今天下午遇到一个问题:java.lang.OutOfMemoryError: Java heap space 内存溢出问题,遇到这个问题一般有两个解决方式第一种:修改代码程序,代码中存在大量未被释放的对象引用,或者gc()机制没有来得及...

    随手小记:
    今天下午遇到一个问题:java.lang.OutOfMemoryError: Java heap space 内存溢出问题,遇到这个问题一般有两个解决方式
    第一种:修改代码程序,代码中存在大量未被释放的对象引用,或者gc()机制没有来得及回收内存
    第二种:扩大jvm内存(主要讲windows上修改方式):
    1、使用statup.bat启动tomcat的:修改bin目录下的catalina.bat文件
    在文件中查找 :gotHome字符串,在其后一行添加:set JAVA_OPTS=-Xms512M -Xmx1024M
    -Xms 的含义是jvm初始堆大小  -Xmx的含义是堆最大大小
    2、来到了坑我了3小时候的大坑了,在项目的实际实施过程中,一般tomcat都被注册到windows的服务中(如果做已经在前面博客中写过),使用windows服务启动tomcat,这种如何修改jvm大小呢,打开注册表  win+r 然后输入 regedit 找到

    HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\tomcat1\Parameters\java
    修改两个参数 :JvmMs 、JvmMx
    JvmMs:初始内存大小
    JvmMx:最大可使用内存大小
    调节内存大小的可以查看任务管理器中的性能 ,根据自己的实际情况进行调整

    在实际的开发中,我使用的服务器是windows server2012 R2,64位,8G内存,但是装的jdk、tomcat都是
    32位的,这个就有一个小坑,在32位中,内存是不允许随便放大的,8G内存我将JvmMx的值改为1.5G,tomcat就启动失败,改为1G则没有问题,后来我手动将jdk、tomcat都换成了64位的,这样一来,jvm就是随便扩大内存了(仅限在物理内存之内)



    展开全文
  • Tomcat浅析—扩大内存

    2015-08-31 22:38:00
    Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。    Tomcat与Java虚拟机关系  Tomcat本身...

        

       Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。     

     

    TomcatJava虚拟机关系

     

        Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个java虚拟机。 JAVA程序启动时JVM都会分配一个初始内存最大内存给这个应用程序。这个初始内存和最大内存在一定程度都会影响程序的性能。比如说在应用程序用到最大内存的时候,JVM是要先去做垃圾回收的动作,释放被占用的一些内存。所以想调整Tomcat的启动时初始内存和最大内存就需要向JVM声明,一般的JAVA程序在运行都可以通过-Xms -Xmx来调整应用程序的初始内存和最大内存: 

             

         设置-Xms -Xmx

             这两个值的大小一般根据需要进行设置。初始化堆的大小执行了虚拟机在启动时向系统申请的内存的大小。一般而言,这个参数不重要。但是有的应用程序在大负载的情况下会急剧地占用更多的内存,此时这个参数就是显得非常重要,如果虚拟机启动时设置使用的内存比较小而在这种情况下有许多对象进行初始化,虚拟机就必须重复地增加内存来满足使用。


         由于以上原因,我们一般把-Xms-Xmx设为一样大,而堆的最大值受限于系统使用的物理内存。一般使用数据量较大的应用程序会使用持久对象,内存使用有可能迅速地增长。当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。因此一般建议堆的最大值设置为可用内存的最大值的80%Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大。

     

    常见异常

     

    1.java.lang.OutOfMemoryError: Javaheap space ----(堆)溢出

             JVM在启动的时候会自动设置JVMHeap的值,其初始空间(-Xms)是物理内存的1/64,最大空间(-Xmx)不可超过物理内存。可以利用JVM提供的-Xmn -Xms-Xmx等选项可进行设置。

             JVM中如果98%的时间是用于垃圾收集,且可用的Heap size不足2%的时候将抛出此异常信息。提示:Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms-Xmx选项设置为相同,而-Xmn1/4-Xmx值。

     

       方案:下面方式一(修改)


    2.java.lang.OutOfMemoryError:PermGen space  ---- 永久保存区域溢出。


           

              PermGen space的全称是Permanent Generationspace,是指内存的永久保存区域。

          

             为什么会内存溢出?

             因为这块内存主要是被JVM存放ClassMeta信息的,Class在被Load的时候被放入PermGenspace区域,它和存放InstanceHeap区域不同,sun的垃圾回收机制不会在主程序运行期对PermGenspace进行清理,所以如果你的APP会载入很多CLASS的话,就很可能出现PermGen space溢出。如果你的WEB APP下都用了大量的第三方jar, 其大小 超过了jvm默认的大小(4M)那么就会产生此错误信息了。


        方案: 下面方式一(修改)

      

       -Xms:java Heap初始大小。默认是物理内存的1/64。

       -Xmx:javaheap最大值。建议均设为物理内存的一半。不可超过物理内存。

       -XX:PermSize:设定内存的永久保存区初始大小,缺省值为64M。

       -XX:MaxPermSize:设定内存的永久保存区最大大小,缺省值为64M。

     

    注:

            虚拟机的堆大小决定了虚拟机花费在收集垃圾上的时间和频度。收集垃圾可以接受的速度与应用有关,应该通过分析实际的垃圾收集的时间和频率来调整。如果堆的大小很大,那么完全垃圾收集就会很慢,但是频度会降低。如果你把堆的大小和内存的需要一致,完全收集就很快,但是会更加频繁。

          调整堆大小的的目的:最小化垃圾收集的时间,以在特定的时间内最大化处理客户的请求。

     

    解决方法:


    1、常规Tomcat安装(方式一)

        找到服务器地址下的catalina.bat

         如:G:\项目提升\铁科院\沪昆湖南调研\program\adjust\apache-tomcat-6.0.36\bin\catalina.bat

    rem Guess CATALINA_HOME if not defined上面添加

    set"JAVA_OPTS=-Xms512M-Xmx1024M -XX:PermSize=192m -XX:MaxPermSize=256m"

     

     

    2Tomcat作为服务  

              如果你的tomcat是注册为windows服务并且是以服务方式启动的,那么上面的方法就无效了,因为这时tomcat启动是读取注册表的参数,而不是读取批处理文件的参数,这时我们有两种方法来设置jvm参数。

           扩大Tomcat服务内存,而不是Tomcat内存(在这里Tomcat被注册为一种服务)

      

      方法1 tomcat为我们提供了一个设置启动参数的窗体,双击tomcat_home/bin目录下的tomcat7w.exe,如图

    1)添加参数


    2)增大内存



    Initial memory pool:初始化的Java虚拟机内存大小,

              Maxinum memory pool:  Java虚拟机可使用的最大内存  

        注:通过windows服务启动的,内存调节不起作用。


    方法2

        打开注册表->HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun2.0\Tomcat6\Parameters\Java(路径可能有一点点差别)


    修改Options的值,把刚才上面那些参数加进去就OK了。


    小结:    


      为什么有的机器我将-Xmx-XX:MaxPermSize都设置为512M之后Eclipse可以启动,而有些机器无法启动?

       1)参数中-Xms的值大于-Xmx,或者-XX:PermSize的值大于-XX:MaxPermSize;

       2)-Xmx的值和-XX:MaxPermSize的总和超过了JVM内存的最大限制,比如当前操作系统最大内存限制,或者实际的物理内存等等。需要说明一点的是,如果你的物理内存是1024MB,但实际系统中用到的并不可能是1024MB,因为有一部分被硬件占用了。

     



    展开全文
  • 手动扩大内存

    2016-07-16 18:41:17
    我们都知道,如果代码里有 递归函数 频繁调用, 用 C++ 提交代码, 很可能就会 出现  Runtime Error (ACCESS_VIOLATION)  但是用G++提交,如果数据量很多的话,又会出现  Time Limit Exceeded 那...

    还在因为 怕 g++ 提交时间很慢,但是用C++ 交又怕栈溢出???

    我们都知道,如果代码里有 递归函数 频繁调用, 用 C++ 提交代码, 很可能就会 出现

         Runtime Error           
    (ACCESS_VIOLATION) 

    但是用G++提交,如果数据量很多的话,又会出现

      Time Limit Exceeded

    那怎么办呢???


    哈哈,G++的话可以用输入加速外挂~~~。。。已经介绍过了


    同样的C++也可以防止栈溢出!!!


    只要在你的代码里加上下面这句话, OK,栈溢出直接搞定!!!


    #pragma comment(linker, "/STACK:102400000,102400000")


    让 Accepted 不是梦想!!!

    展开全文
  •  后来一想,扩大内存,应该就可以了吧?于是就由8G扩大为12G,再编译就正常了。  工作中有时要开两个虚拟机。心里想的是,以后有机会,还是要64G内存,这样每个虚拟机配16G内存,还有多余的。 ...
  • 题意: 给一棵树,并给定各个点权的值,然后有3种操作: I C1 C2 K: 把C1与C2的路径上的所有点权值加上K D C1 C2 K:把C1与C2的... HDU的OJ采用Windows系统,容易爆栈,所以在代码中加入汇编手动扩大内存。 mym
  • 数据库性能调整 调整概述 调整Oracle的内存使用 调整Oracle的磁盘利用 调整数据库的应用 调整Oracle的内存使用 调整共享池 调整数据库缓冲区 调整重做日志缓冲区 The Shared Global AreaSGA The Shared Pool 其大小...
  • 我们都知道,如果代码里有 递归函数 频繁调用, 用 C++ 提交代码, 很可能就会 出现  Runtime Error (ACCESS_VIOLATION)  但是用G++提交,如果数据量很多的话,又会出现  Time Limit Exceeded 那...
  • proguard代码混淆器 内存不足异常

    千次阅读 2015-05-06 16:22:31
    报错 outOfMerory 内存溢出,看官网提示需要将java的jvm内存扩大,很容易理解 因为混淆视很占内存的。 解决办法:关闭软件, cmd 进入命令提示符,然后输入命令 java -Xms512m -Xmx1024m -jar E:\360云盘\软件----...
  • 我们都知道,如果代码里有 递归函数 频繁调用, 用 C++ 提交代码, 很可能就会 出现 Runtime Error (ACCESS_VIOLATION) 但是用G++提交,如果数据量很多的话,又会出现 Time Limit Exceeded 那怎么办呢??? ...
  • 1、拉伸到内存 2、分配一块新的空间:SizeOfImage + Ex 3、将最后一个节的SizeOfRawData和VirtualSize改成N SizeOfRawData = VirtualSize = N N = (SizeOfRawData或者VirtualSize 内存对齐后的值) + Ex 4、...
  • 代码节添加代码实现 作者经过一周不断的失败,...2. 文件缓冲区扩展到内存映像缓冲区(ImageBuffer) 3. 判断代码空闲区是否有足够空间存储ShellCode代码 4. 将代码复制到空闲区 5. 修正E8 6. 修正E9 7. 修改OEP 8....
  • 5.6.7 grow_heap,shrink_heap,delete_heap,heap_trim   ...中可读可写区域扩大; shrink_heap() 函数缩小 sub_heap 的虚拟内存区域,减小该 sub_heap 的虚拟内存占用量; delete_...
  • 虚拟内存

    2019-10-24 21:27:16
    虚拟内存虚拟内存的好处: 扩大地址空间; 内存保护:每个进程运行在各自的虚拟内存地址...当不同的进程使用同样的代码时,比如库文件中的代码,物理内存中可以只存储一份这样的代码,不同的进程只需要把自己的虚...
  • 今天运行项目的时候,查询了将近一年的数据,最后又组装数据成报表,结果...只能改变服务器的最大内存了,网上查了下,到处是指定Tomcat服务器的内存大小的,根本没有Orion的,我只要瞎碰瞎摸,最后,在启动语句前边
  • C++内存笔记

    2020-02-25 14:52:25
    一个程序本质上由BSS段、data段、texe段,...堆(heap)——一般新分配的内存如malloc就是堆扩大 栈(stack)——用户存放程序临时创建的局部变量。 static 无论是全局变量还是局部变量都存储在全局/静态区域,在...
  • 扩大

    2020-10-04 15:00:00
    文章目录一、流程二、 演示三、完整代码 一、流程 1、File-> FileBuffer 2、FileBuffer->ImageBuffer 3、修改SizeOfImage的大小(要扩大多少:Ex) ...9、 N = (SizeOfRawData或者VirtualSize 内存对齐后
  • Java内存泄漏OMM

    2020-08-01 23:34:30
    JVM 发生 OOM 的 8 种原因、及解决办法 高手总结的9种 OOM 常见...1.对于大对象分配,条件允许的话,可以扩大内存的分配空间,是否可以对大对象进行分割 2.对于内存泄漏,可以使用(jmap和jconsole监测),检查代码
  • 虚拟内存也是必会必掌握概念,盘一下 1 虚拟内存 1.1 虚拟内存是什么 虚拟内存是一种内存管理方式,它通过把程序切成小块,...虚存还对特定的内存地址提供写保护,可以防止代码或数据被恶意篡改。 3.公平内存分配。采用
  • 在程序运行时,代码区,常量区以及全局静态区的大小是固定的,会变化的只有栈和堆的大小。而栈的内存是有操作系统自动释放的,我们平常说所的iOS内存引用计数,其实是就堆上的对象来说的。 如何引入tagged pointer ...
  • 重点看List的取值和赋值,因为页面上是一个大的List套着几个小的List,原则上后台检索的时候不能循环检索因为扩大内存不提倡。所以这段代码里对于前台的List的值取出来然后再放到List里是非常值得学习的

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 166
精华内容 66
关键字:

扩大内存代码