精华内容
下载资源
问答
  • ... <p>But this problem is occurring only on the production server, not in my local. <p>I already tried to do a <pre><code>ini_set('memory_limit', '-1');...<pre><code>public function ...
  • 内存大小的配置

    2019-02-14 17:43:05
     4种方式配置不同作用jvm堆栈内存。   1、Eclise 中设置jvm内存: 改动eclipse配置文件,对全部project都起作用  改动eclipse根文件夹下eclipse.ini文件  -vmargs //虚拟机设置  -Xms...

    转自:https://www.cnblogs.com/lytwajue/p/7120031.html

          4种方式配置不同作用域的jvm的堆栈内存。
     

    1、Eclise 中设置jvm内存: 改动eclipse的配置文件,对全部project都起作用

         改动eclipse根文件夹下的eclipse.ini文件

         -vmargs  //虚拟机设置

         -Xms40m //初始内存

         -Xmx256m //最大内存

         -Xmn16m //最小内存

         -XX:PermSize=128M //非堆内存

         -XX:MaxPermSize=256M

     2、Eclise 中设置jvm内存:jres VM Arguments參数的设置,对全部project都起作用

         打开eclipse  window-preferences-Java-Installed JREs -Edit-Default VM Arguments   

         在VM自变量中输入:-Xmx128m -Xms64m -Xmn32m -Xss16m

    3、Eclise 中设置jvm内存:RunConfigurations  VM arguments參数设置,仅仅对这个project起作用

    在Eclipse中-->右击project/要执行的主类-->Run As-->RunConfigurations-->(x)=Arguments-->VM arguments

    中增加 -Xmx36m

    然后Apply-->Run

    这上面的36指的是给java虚拟机分配的最大堆内存大小,单位是MB,也就是说上面的那句话的含义是JVM的最大堆内存是36MB

     

    4、Eclise 中设置jvm内存:Debug Configurations  VM arguments參数设置,仅仅对这个project起作用

    在Eclipse中-->右击project/要执行的主类-->Debug As-->DebugConfigurations-->(x)=Arguments-->VM arguments

    中增加-Xmx36m

    然后Apply-->Run

    这上面的36指的是给java虚拟机分配的最大堆内存大小。单位是MB,也就是说上面的那句话的含义是JVM的最大堆内存是36MB

     

     5、Tomcat内存设置

    windows下在catalina.bat的第一行添加: 

    Java代码 :set JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m  

    linux下在catalina.sh的第一行添加: 

    Java代码 :JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m

     

    实例+具体解释

    设置Tomcat启动的初始内存其初始空间(即-Xms)是物理内存的1/64。最大空间(-Xmx)是物理内存的1/4。

    能够利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置

    实例,下面给出1G内存环境下java jvm 的參数设置參考:

    JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "

    JAVA_OPTS="-server -Xms768m -Xmx768m -XX:PermSize=128m -XX:MaxPermSize=256m -XX: NewSize=192m -XX:MaxNewSize=384m"

    CATALINA_OPTS="-server -Xms768m -Xmx768m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:NewSize=192m -XX:MaxNewSize=384m"

    Linux:

    在/usr/local/apache-tomcat-5.5.23/bin 文件夹下的catalina.sh加入:

    JAVA_OPTS='-Xms512m -Xmx1024m'要加“m”说明是MB。否则就是KB了,在启动tomcat时会 报内存不足。

    -Xms:初始值-Xmx:最大值-Xmn:最小值

    Windows:

    在catalina.bat最前面增加set JAVA_OPTS=-Xms128m -Xmx350m 

    假设用startup.bat启动tomcat,OK设置生效.够成功的分配200M内存.

    可是假设不是运行startup.bat启动tomcat而是利用windows的系统服务启动tomcat服务,上面的设置就不生效了,就是说set JAVA_OPTS=-Xms128m -Xmx350m 没起作用.上面分配200M内存就OOM了..

    windows服务运行的是bin\tomcat.exe.他读取注冊表中的值,而不是catalina.bat的设置.

    解决的方法:

    改动注冊表HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Tomcat Service Manager\Tomcat5\Parameters\JavaOptions

    原值为-Dcatalina.home="C:\ApacheGroup\Tomcat 5.0"-Djava.endorsed.dirs="C:\ApacheGroup\Tomcat 5.0\common\endorsed"-Xrs增加 -Xms300m -Xmx350m 

    重起tomcat服务,设置生效

     

     

    Tomcat 的JVM 内存溢出问题的解决keyword: tomcat 的jvm 内存溢出问题的解决 

     

    近期在熟悉一个开发了有几年的项目,须要把数据库从mysql移植到oracle。首先把jdbc的连接指向mysql。打包放到tomcat里面,能够跑起来,没有问题,但是当把jdbc连接指向oracle的时候,tomcat就连续抛java.lang.OutOfMemoryError的错误,上网google了一下。了解了一下tomcat的执行机制,也攻克了问题。share出来,以备查。 

     

    1、首先是:java.lang.OutOfMemoryError: Java heap space 解释:

    Heap size 设置 JVM堆的设置是指java程序执行过程中JVM能够调配使用的内存空间的设置.JVM在启动的时候会自己主动设置Heap size的值。其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。能够利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。

     

    提示:在JVM中假设98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。 

    提示:Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为同样,而-Xmn为1/4的-Xmx值。 

    解决方法:

    手动设置Heap size 改动TOMCAT_HOME/bin/catalina.bat,在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面增加下面行:

    Java代码 set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m

     

    或改动catalina.sh 在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面增加下面行: JAVA_OPTS="$JAVA_OPTS -server -Xms800m -Xmx800m -XX:MaxNewSize=256m" 

    2、其次是:java.lang.OutOfMemoryError: PermGen space 原因:

    PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序执行期对PermGen space进行清理,所以假设你的应用中有非常CLASS的话,就非常可能出现PermGen space错误。这样的错误常见在webserver对JSP进行pre compile的时候。假设你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。 

    解决方法:

    1. 手动设置MaxPermSize大小 改动TOMCAT_HOME/bin/catalina.bat(Linux下为catalina.sh),在Java代码 “echo "Using CATALINA_BASE: $CATALINA_BASE"”上面增加下面行: set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m

    catalina.sh下为: Java代码 JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=128M -XX:MaxPermSize=512m"

    展开全文
  • 内存的作用

    2021-04-07 17:24:41
    待执行方法会写在栈内存中。如果代码bug导致出现死循环,java就会报栈内存溢出,这样可以预防服务器崩溃。 如果不出现死循环,而递归次数过多(比如一万以上),也会出现栈... 堆内存的大小是可以手动修改。 ...

    待执行的方法会写在栈内存中。如果代码bug导致出现死循环,java就会报栈内存溢出,这样可以预防服务器崩溃。
    如果不出现死循环,而递归次数过多(比如一万以上),也会出现栈内存溢出。因为递归是把所有方法全部列举出来,压入栈中,从栈底一直累加到栈顶,直到条件结束,才一次性一起执行。

    堆内存用于存储数据,当数据量过大时会出现栈内存溢出。比如把一个list不停地复制,或者在数据库中一次性读入一个过大的list。 堆内存的大小是可以手动修改的。

    展开全文
  • 临时表和内存表都可以人工创建,但临时表更多的作用是系统自己创建后,组织数据以提升性能,如子查询,临时表在多个连接之间不能共享。这里只讨论内存内存表,就是放在内存中的表,所使用内存大小可通过My.cnf中...

    临时表和内存表都可以人工创建,但临时表更多的作用是系统自己创建后,组织数据以提升性能,如子查询,临时表在多个连接之间不能共享。这里只讨论内存表

    内存表,就是放在内存中的表,所使用内存的大小可通过My.cnf中的max_heap_table_size指定,如max_heap_table_size=1024M,内存表与临时表并不相同,临时表也是存放在内存中,临时表最大所需内存需要通过tmp_table_size = 128M设定。当数据超过临时表的最大值设定时,自动转为磁盘表,此时因需要进行IO操作,性能会大大下降,而内存表不会,内存表满后,会提示数据满错误。

    临时表和内存表都可以人工创建,但临时表更多的作用是系统自己创建后,组织数据以提升性能,如子查询,临时表在多个连接之间不能共享。这里只讨论内存表

    创建表是,用engine=heap可创建(mysql5.5中已经不支持type,以后都用engine,形成习惯)。

    代码如下:

    create table test

    (

    id int unsigned not null auto_increment primary key,

    state char(10),

    type char(20),

    date char(30)

    )ENGINE=MEMORY DEFAULT CHARSET=utf8;

    内存表的特性

    内存表的表定义是存放在磁盘上的,扩展名为.frm, 所以重启不会丢失。

    内存表的数据是存放在内存中的,所以重启会丢失数据。

    内存表使用一个固定的记录长度格式。

    内存表不支持BLOB或TEXT列,比如varchar与text字段就不会被支持。

    内存表支持AUTO_INCREMENT列和对可包含NULL值的列的索引(网上大多说不支持,这是错误的)。内存表支持大于(>) 小于( mysql重启后,主键、自增、索引仍然存在,只是数据丢失。这也是对网上的一些错误文字纠正。

    内存表表在所有客户端之间共享(就像其它任何非TEMPORARY表)。

    MEMORY存储引擎执行HASH和BTREE索引。你可以通过添加一个如下所示的USING子句为给定的索引指定一个或另一个:

    代码如下:

    CREATE TABLE lookup

    (id INT, INDEX USING HASH (id))

    ENGINE = MEMORY;

    CREATE TABLE lookup

    (id INT, INDEX USING BTREE (id))

    ENGINE = MEMORY;

    内存表初始化,可以使用--init-file来初始化,避免重启mysql后数据被清空。比如--init-file="/data/mysql/init.sql", init.sql格式为:

    代码如下:

    use db_test;

    select *** into m_table;

    在数据库复制时,如果主机当掉,则会在binLog中自动加入delete from [内存表],将slave的数据也删除掉,以保证两边的数据一致性。

    内存表不支持事务。

    内存表是表锁,当修改频繁时,性能可能会下降。

    内存表的使用

    内存表使用哈希散列索引把数据保存在内存中,因此具有极快的速度,适合缓存中小型数据库,但是使用上受到一些限制。

    heap对所有用户的连接是可见的,这使得它非常适合做缓存。

    仅适合使用的场合。heap不允许使用xxxTEXT和xxxBLOB数据类型。注:操作符 “<=>” 说明:NULL-safe equal.这个操作符和“=”操作符执行相同的比较操作,不过在两个操作码均为NULL时,其所得值为1而不为NULL,而当一个操作码为NULL时,其所得值为0而不为NULL。

    一旦服务器重启,所有heap表数据丢失,但是heap表结构仍然存在,因为heap表结构是存放在实际数据库路径下的,不会自动删除。重启之后,heap将被清空,这时候对heap的查询结果都是空的。

    如果heap是复制的某数据表,则复制之后所有主键、索引、自增等格式将不复存在,需要重新添加主键和索引,如果需要的话。

    对于重启造成的数据丢失,有以下的解决办法:

    在任何查询之前,执行一次简单的查询,判断heap表是否存在数据,如果不存在,则把数据重新写入,或者DROP表重新复制某张表。这需要多做一次查询。不过可以写成include文件,在需要用该heap表的页面随时调用,比较方便。

    对于需要该heap表的页面,在该页面第一次且仅在第一次查询该表时,对数据集结果进行判断,如果结果为空,则需要重新写入数据。这样可以节省一次查询。

    更好的办法是在mysql每次重新启动时自动写入数据到heap,但是需要配置服务器,过程比较复杂,通用性受到限制。

    小记录,MyISAM与InnoDB互转

    代码如下:

    // InnoDB转MyISAM

    ALTER TABLE `tablename` ENGINE = MYISAM

    // MyISAM转InnoDB

    alter table tablename type=innodb;

    ALTER TABLE `tablename` ENGINE = InnoDB

    本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

    本文系统来源:php中文网

    展开全文
  • 一、内存的作用 在现代社会,我们由于工作的需要、学习的需要,往往不便携带大体积的计算机。笔记本内存(口头上又被成为内存条)的主要作用:是用来存放计算机系统执行时所需要的数据,存放各种输入,输出数据和中间...

    一、内存的作用
    在现代社会,我们由于工作的需要、学习的需要,往往不便携带大体积的计算机。笔记本内存(口头上又被成为内存条)的主要作用:是用来存放计算机系统执行时所需要的数据,存放各种输入,输出数据和中间计算结果,以及与外部存储器交换信息时作为缓冲用,实际上是计算机本身数据暂时存储的一个数据中心,是我们计算机实现任何功能都不可缺少的硬核组件。
    因此,内存的品质和容量的大小直接关系计算机系统的速度,稳定性和兼容性。

    二、内存的分类

      分类为2种:
      1.  DRAM      中文名称:动态随机存储器       不保存断电后数据会丢失
      2.  ROM        中文名称:只读存储器             不保存断电后数据不会丢失
    
      我们用**想也知道,不保存断电后数据不会丢失的这种内存,价格会变高,因此市场上的多数笔记本电脑配置了不保存断电后数据会丢失的内存条。
    

    三、内存的发展简史

    任何的现代电子器件发展都有一个从实验室走向市场的过程。
    早期,我们必须把一块内存IC焊接到主机板上才能正常使用,一旦某一块内存IC坏了,必须焊下来才能更换,这实在是太费劲了。
    后来,电脑设计人员发明了模块化的条装内存,每一条上集成了多块内存IC,相应地,在主板上设计了内存插槽,这样,内存条就可随意拆卸了,从此,内存的维修和扩充都变得非常方便。
    最后就变成了咱们现在看到的样子。
    

    四、内存选购

     选购内存条时除了要考虑前面介绍的引脚数、容量和存取速度之外,还要考虑以下几个因素:
    

    (1) 奇偶性
    为了保证内存存取数据的的准确性,有些内存条上有奇偶校验位,如3片或9片装的内存条。如果您对电脑运行的准确性要求很高,最好选择有奇偶校验功能的内存条。
    (2) 价格
    虽然现在的内存条和以前相比,价格已经大幅下降,但不同的品牌和性能,价格还是有一些差别,您可根据自己的需要和预算情况选择适合自己的价位。 另外,购买内存时您还须注意品牌和质量,目前,生产内存的厂家较多,质量较为可靠的品牌有:金士顿、现代、宇瞻、KingMax、金邦。

    展开全文
  • 展开全部static作用:1、修饰函数局部变量:特点:有默认值0,只执行一次,运行一开始62616964757a686964616fe4b893e5b19e31333366303734就开辟了内存内存放在全局2、修饰全局函数和全局变量:特点:只能在本源...
  • 电脑内存不足怎么办,虚拟内存能起到多大作用?我们可以看到下图网友反映"电脑内存有12GB内存,但是玩大型游戏时候,经常弹出内存不足窗口,导致游戏经常崩溃"。怎么回事呢?其实跟我们今天聊话题很契合,物理...
  • 4种方式配置不同作用jvm堆栈内存! 1、Eclise 中设置jvm内存: 修改eclipse配置文件,对所有工程都起作用  修改eclipse根目录下eclipse.ini文件  -vmargs //虚拟机设置  -Xms40m //初始内存  -Xmx...
  • JVM优化之调整大内存分页(LargePage)本文将从内存分页原理,如何调整分页大小两节内容,向你阐述LargePage对JVM性能有何提升作用,并在文末点明了大内分页作用。OK,让我们开始吧!内存分页大小对性能提升...
  • 4种方式配置不同作用jvm堆栈内存。 1、Eclise 中设置jvm内存: 改动eclipse配置文件,对全部project都起作用 改动eclipse根文件夹下eclipse.ini文件 -vmargs //虚拟机设置 -Xms40m //初始内存 -Xmx...
  • 方法一:结构体的内存大小=最后一个成员偏移量 + 最后一个成员大小 + 末尾填充字节数偏移量:某个成员实际地址和这个结构体首地址之间距离。例.1:struct data { char a; int b; double c; } 比如
  • 共用体所占内存大小:共用体所占内存大小即公用体中长度最大元素所占用字节数。 #include<stdio.h> typedef union { long i; double dog; int k[6]; //4*6=24 char c; }DATE; struct data { char...
  • 科技引领生活,爱科技小青年带你在科技海洋里无限遨游……固态硬盘与内存条都是电脑必备器件,那么这两者都是干什么用呢?它们之间又有什么区别和联系呢?固态硬盘和内存条实际上区别很大,两者之间也没有太...
  • 内存溢出标志就不写了,主要写如何设置内存大小吧!windows下windows下设置时起作用的是run.bat 修改配置入下set JAVA_OPTS=%JAVA_OPTS% -Xms256m -Xmx1024m -Xss 128kXss意思:使JBoss每增加一个线程(thread)就...
  • jboss内存大小改动

    2014-03-24 16:23:00
    困扰鄙人较久一个问题就是内存溢出,今天又遇到了,所以...内存溢出标志就不写了,主要写如何设置内存大小吧! windows下 windows下设置时起作用的是run.bat 修改配置入下 set JAVA_OPTS=%JAVA_OPTS% -Xms25...
  • 一、内存分配方式静态存储区分配: 该内存在程序编译阶段...该内存分配大小有限在堆上分配: 动态内存分配,生命周期由程序员决定,使用非常灵活。使用过程需要避免内存泄漏、频繁分配和释放、内存碎片产生。 二、堆...
  • 内存分页大小对性能提升原理

    千次阅读 2018-05-19 13:41:44
    JVM优化之调整大内存分页(LargePage)本文将从内存分页原理,如何调整分页大小两节内容,向你阐述LargePage对JVM性能有何提升作用,并在文末点明了大内分页作用。OK,让我们开始吧!内存分页大小对性能提升...
  • 1、Eclise 中设置jvm内存: 改动eclipse配置文件,对全部project都起作用 改动eclipse根文件夹下eclipse.ini文件 -vmargs //虚拟机设置 -Xms512m //初始内存 -Xmx1024m //最大内存 -Xmn16m //最小内存 -XX:...
  • 内存作用

    2017-04-14 14:23:32
     通常我们习惯直接使用new、malloc等API申请分配内存,这样做缺点在于:由于所申请内存的大小不定, 当频繁使用时会造成大量的内存碎片并进而降低性能。C/C++的内存分配(通过malloc或new)可能需要花费很多时。...
  • 可以厅数据保留在内存时间长度(存储持续性)以及程序哪一部分可以访问数据(作用域和链接)等,可以使用new来动态地分配内存,而定位new运算符提供了这种技术一种变种。C++名称空间是另一种控制访问权方式。...
  • C++中new operator就是我们常用new操作符,它做了如下两件事: 1 调用operator new操作...operator new函数通常声明为如下形式——其必须制定分配内存大小。该函数返回一个指针,指向未初始化内存。size_t指...
  • 刚刚安装了myeclipse9.0,又配置了tomcat7.0,想用ssh框架搭个项目试试tomcat7.0,没想到刚启动项目就会报错,在tomcat6.0中就不会有问题,上网查了那些都不起作用,后来看到这个,配置下,哦了,原来是tomcat7.0 ...
  • DDR3 内存大小计算

    2020-11-27 14:06:08
    首先,我们先了解一下内存的大体结构工作流程,这样会比较容量理解这些参数在其中所起到的作用。这部分的讲述运用DDR3的简化时序图。 DDR3的内部是一个存储阵列,将数据“填”进去,你可以它想象成一张表格。和表格...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,162
精华内容 1,264
关键字:

内存大小的作用