我想知道mapreduce.map.memory.mb和mapred.map.child.java.opts参数之间的关系.
是mapreduce.map.memory.mb> mapred.map.child.java.opts?
谢谢,Kewal.
我在IntelliJ IDEA中运行Processing应用程序时遇到了这个特殊问题.我想保存一个大图像并执行此操作我遇到以下异常:
线程"动画线程"中的异常java.lang.OutOfMemoryError:java.awt.image.Raster.createPackedRaster(Raster.java:467)中java.awt.image.DataBufferInt.(DataBufferInt.java:75)的Java堆空间java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1032)在java.awt.image.BufferedImage.(BufferedImage.java:331)处理处理时的processing.core.PImage.saveImageIO(PImage.java:3117). core.PImage.save(PImage.java:3297)在OffScreenRender.stopRender(OffScreenRender.java:38)的MainVecField.draw(MainVecField.java:93)处理.处理.Cack.Papplet.handleDraw(PApplet.java:2305)at at processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:243)atprocess.core.PApplet.run(PApplet.java:2176)at java.lang.Thread.run(Thread.java:724)
很明显这里有一些内存分配问题.问题是,当我更改IntelliJ中的.vmoptions文件时,我得到相同的结果,它们没有任何效果.IDE右下角的"内存"编号相应增加,但似乎不让我的应用程序分配更多内存.
当我在处理IDE中运行处理应用程序时,我可以设法通过设置较大的堆大小来保存更大的文件.
在IntelliJ中,超过256mb似乎没有什么区别.所以我的问题是如何在IntelliJ中设置更大的堆大小,允许我的应用程序分配更多的内存?
谢谢您的帮助!
我附上了我的项目的代码,以防有人想测试它:
import processing.core.*;
public class TestClassMain extends PApplet
{
public static void main(String args[])
{
PApplet.main(new String[] { "--present", "TestClassMain" });
}
//Global variables
OffScreenRender screenRender;
int c = 0;
//Variables for offScreenRender
int resFactor = 10;
boolean offScreenRenderSwitch = false;
public void setup()
{
size(1000,700);
background(0);
stroke(255);
//Initialize the render object
screenRender = new OffScreenRender(this, 11000, 7950, resFactor);
}
public void draw()
{
frameRate(30);
stroke(255);
//Check if the …Run Code Online (Sandbox Code Playgroud) 我有apache-tomcat作为我的web服务器.我想检查一下linux为jvm分配的堆大小.也从哪里,我可以修改它.
我在windows xp上有tomcat 6服务器,我通过console启动tomcat,即使用startup.bat.
AFAIK catalina.bat文件用于Windows,所以我正在更改bat文件进行内存管理.我没有tomcat配置窗口.
现在我想增加它的堆大小所以我的问题是我应该扩展现有JAVA_OPTS的catalina.bat文件,即
set JAVA_OPTS=%JAVA_OPTS% -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties" -Xms1024m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=128m
Run Code Online (Sandbox Code Playgroud)
或者我应该在catalina.bat文件中创建新的环境变量ie
set JAVA_OPTS=-Xms1024m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=128m
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?
请指导.
我能够在Probe中看到当前的堆大小,但是无法查看现有的perm大小,因此perm大小的默认值是多少?
编辑:
以下参数有帮助吗?
-XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled
Run Code Online (Sandbox Code Playgroud) 我从另一个位置复制了一个jdk目录.从那时起,我收到以下错误消息.
Your environment has been set.
java version "1.5.0_22"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_22-b03)
Java HotSpot(TM) Client VM (build 1.5.0_22-b03, mixed mode, sharing)
PROPS=-Xms1024m -Xmx5096m -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl -Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl -Djava.ext.dirs=..;.;..\lib;..\classes -Dfile.encoding=UTF-8
CLASSPATH=C:\Oracle\MIDDLE~1\patch_wls1211\profiles\default\sys_manifest_classpath\weblogic_patch.jar;C:\PROGRA~1\Java\JDK15~1.0_2\lib\tools.jar;C:\Oracle\MIDDLE~1\WLSERV~1.1\server\lib\weblogic_sp.jar;C:\Oracle\MIDDLE~1\WLSERV~1.1\server\lib\weblogic.jar;C:\Oracle\MIDDLE~1\modules\features\weblogic.server.modules_12.1.1.0.jar;C:\Oracle\MIDDLE~1\WLSERV~1.1\server\lib\webservices.jar;C:\Oracle\MIDDLE~1\modules\ORGAPA~1.1/lib/ant-all.jar;C:\Oracle\MIDDLE~1\modules\NETSFA~1.0_1/lib/ant-contrib.jar;
Invalid maximum heap size: -Xmx5096m
The specified size exceeds the maximum representable size.
Could not create the Java virtual machine.
Run Code Online (Sandbox Code Playgroud)
这是否意味着我将不得不重新安装jdk,而不仅仅是复制任何安装目录?我问这个而不是自己尝试,因为这个练习必须在客户端机器上完成.
当前的机器是Windows 2008服务器,具有12GB的RAM.
我正在开发一款安卓游戏.当我尝试使用3张图像作为背景时问题就出现了.图像为1280x720px和100kb大.图像真的不是那么大,所以我有点困惑为什么它们应该导致内存问题.
注意:屏幕分辨率是800x400所以我不能真正调整因子2的大小,因为它是在Android开发人员的建议 注意:我正在使用HTC欲望手机(这里崩溃来了),我也尝试过三星Galaxy S1和三星它运作正常.
我已经分析了DDMS中的内存,奇怪的是我发现Heap只有3.5mb大.如果我检查rt.MaxMemory(),它说每个应用程序有大约25mb的空间.
我想到的是,堆没有足够快地"更新"以适应更大的照片/应用程序,所以它在加载图像之前崩溃,尽管它很小.有没有办法手动设置堆大小,或者至少告诉它放大?
这是我加载图像的代码:
Bitmap floorFront = BitmapFactory.decodeResource(host.getResources(), R.drawable.floor1);
floorFront = Bitmap.createScaledBitmap(floorFront,host.realWidth,host.realHeight, true);
floorFront = Bitmap.createBitmap(floorFront, 0, host.realHeight/2, host.realWidth, host.realHeight/2);
host.addInstance(new Background(0,host.realHeight/2,host,floorFront,1));
Bitmap floorBack = BitmapFactory.decodeResource(host.getResources(), R.drawable.sand);
floorBack = Bitmap.createScaledBitmap(floorBack,host.realWidth,host.realHeight, true);
floorBack = Bitmap.createBitmap(floorBack, 0, host.realHeight/2, host.realWidth, host.realHeight/2);
host.addInstance(new Background(0,host.realHeight/2,host,floorBack,4));
Bitmap floorRock = BitmapFactory.decodeResource(host.getResources(), R.drawable.foreground);
floorRock = Bitmap.createScaledBitmap(floorRock,host.realWidth,host.realHeight, true);
floorRock = Bitmap.createBitmap(floorRock, 0, host.realHeight/2, host.realWidth, host.realHeight/2);
host.addInstance(new Background(0,host.realHeight/2,host,floorRock,0));
Run Code Online (Sandbox Code Playgroud)
以下是LogCat的确切错误:
maxMemory:25165824
memoryClass:24
6144000-byte external allocation too large for tgis process.
Out of memory: Heap Size=4739KB, Allocated=2399KB, Bitmap …Run Code Online (Sandbox Code Playgroud) 基本上我们已经注意到,在某些计算机上设置JVM选项-Xmx(最大堆大小)有时会导致JVM无法初始化,即使系统上有足够的RAM.
因此,例如,在4GB的机器上,我们有-Xmx1024m失败但-Xmx800m工作.我可以在一台1GB的机器上理解,即使是一台2GB的机器,但在一台4GB的机器上,特别是考虑到Windows,Linux等可以交换RAM,为什么这会失败?
我已经看到很多线程和问题都说减少你的最大堆大小,但是没有人可以解释为什么它失败了,这正是我真正想要的.
同样,你怎么说消耗尽可能多的内存,你想要一定的大小呢?
很多帖子都谈到了Android堆大小,到目前为止我发现的最大堆大小的唯一常见的事情是它至少有16MB,但这是自API 3以来的限制.对于使用更多内存,人们会建议使用NDK或任何超出"正常"Android开发的东西.
是否有任何Android版本要求设备具有更大的堆大小,以便我可以开始假设更大的那个并停止在内存上如此便宜?
在清单中是否还要求大堆的标志(来自API 11 - 蜂窝),或者是一个模糊的请求,设备甚至可能忽略它?
多年来,Android硬件已经有了很大的改进,但我们仍然需要在内存上如此便宜,即使设备现在有超过1GB的内存.奇怪的是,我们不能要求操作系统为我们提供特定数量的堆大小,并承诺我们不会再使用它了.
我正在运行Junit测试,它会抛出异常OutOfMemory.该测试在 NetBeans 6.9.X中启动.在分析它时,我意识到Heap maxSize是64M.我想增加这个,但我找不到如何做到这一点.
我已经尝试右键单击项目 - >属性 - >运行,并在我设置-Xms300M的VM选项下,但这不起作用.
任何提示?
提前致谢.
我想增加Glassfish的堆大小.为此,我知道我可以达到4GB:
java -Xmx4000M -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03-384-10M3425)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02-384, mixed mode)
Run Code Online (Sandbox Code Playgroud)
我尝试在domain.xml文件中将-Xmx设置为2GB:
<jvm-options>-Xmx2000m</jvm-options>
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
asadmin> start-domain
Waiting for ... to start .Error starting domain ...
The server exited prematurely with exit code 1.
Before it died, it produced the following output:
Error occurred during initialization of VM
The size of the object heap + VM data exceeds the maximum representable size
launchctl bsexec failed: Inappropriate ioctl for device
Run Code Online (Sandbox Code Playgroud)
使用-v选项启动命令可以得到: …
heap-size ×10
jvm ×4
java ×3
android ×2
memory ×2
tomcat ×2
apache ×1
glassfish ×1
hadoop ×1
hadoop-yarn ×1
heap-memory ×1
jdk1.5 ×1
junit ×1
linux ×1
memory-leaks ×1
netbeans ×1
processing ×1
tomcat6 ×1