Tag: 内存

如何在java中复制(内存)数组?

嗨,我想复制一个数组…我不想使用复制速度慢的“克隆”..我试过arraycopy和copyOf,但它不能正常工作 for (int i = 0; i < arraySize; i++) { City[] tempCities = Arrays.copyOf(cities, cities.length) ; distance = 0; tempCities[i].setVisited(); } 但这会修改​​我的原始数组(城市)。 有谁知道如何复制,没有另一个指向同一对象的指针

与堆使用相比,Java应用程序的巨大系统内存使用量

我有像java框架这样的微服务。 许多java进程在一个盒子上运行(ubuntu 14.04.4 LTS)。 java进程使用很多系统内存,因此交换空间被大量使用。 jstat gc报告不解释系统内存使用情况。 所有java进程都使用参数运行 -XX:MinHeapFreeRatio=20 -XX:MaxHeapFreeRatio=40 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 强制JVM将内存返回给系统。 没有参数,问题仍然存在。 一些java组件使用nashorn引擎来编写一些function。 有人可以解释这里的行为吗? 是否有任何jvm patameters限制巨大的系统内存使用? 如何命令操作系统对jvm的内存分配更具限制性? 一些数据: 组件A(与nashorn) 最佳: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2400 xxxxxx 20 0 13.933g 807496 7332 S 0.0 2.5 4180:15 java jstat -gc 2400: S0C S1C S0U S1U EC EU […]

JTextPane是否支持文本内存分页?

我正在尝试改进文档显示组件的现有实现。 表达的一个担忧是,当加载大量文本时,我们将获得OOMexception。 根据我之前使用.net的经验,我知道一些基本组件实现了分页,因此没有所有文本都可视化加载到文档中,因此事情不仅工作得更快,而且我们也希望避免出现OOMexception。 所以我想知道是否有支持这些function的基本摆动组件,特别是JTextPanel? 感谢您的帮助,非常感谢

有没有办法在Java中为每个线程设置最大内存使用限制?

当我们在Java程序中启动线程时,有没有办法让我们为每个线程分配内存限制? 我的意思是我们为新的Java进程分配这样的东西: /usr/java/default/bin/java -Xms512m -Xmx1024m -jar /opt/abc/MyProcessor/MyProcessor.jar 有什么方法可以用Java线程做类似的事情吗? 基本上,我的每个线程都要完成一些任务,我希望对每个内存的使用量设置一些最大限制。

Java中ArrayList的内存大小是多少

我有一个ArrayList ,我想知道它使用了多少内存。 Obj是变体的,它不像根据Obj以数组中的元素数量那么容易。

了解JVM中的对象开销

我正在研究java,我记得在某个地方读过java对象,在JVM中有一些开销,这是由虚拟机用于管理的原因。 所以我的问题是,有人可以告诉我是否以及如何在HotSpot JVM中获取对象的总大小,以及它可能带来的任何开销?

Tomcat崩溃:Java Runtime Environment没有足够的内存来继续

我们正在运行一个Web应用程序,用户数量很少,大约7个,但显示图像的负载很高。 最近我们升级到Java 6u43和Tomcat 6.036,经过一些使用(大约一周)tomcat服务崩溃。 重启后,它可以运行几天,或者只是几个小时,然后再次崩溃。 即使重新启动服务器后它再次崩溃,我们甚至看到它在活动10分钟后。 它总是在tomcat的bin文件夹中的hs_err_pid文件中使用相同的消息。 请参阅下面的完整错误消息示例。 本机内存总是不足,主活动线程始终是JavaThread“C2 CompilerThread1”,但始终采用不同的方法。 我们运行的是Windows 2008 Service Pack 2,32位,2个CPU,3GB。 对于tomcat xms设置为512KB和xmx到1536KB。 没有其他具体设置。 当它崩溃时,Java堆远远低于1536的完全使用率。 任何想法,建议这可能是什么? (在tomcat升级之前我们使用tomcat 6.014和Java 6u02很长一段时间没有任何问题) # # There is insufficient memory for the Java Runtime Environment to continue. # Native memory allocation (malloc) failed to allocate 629784 bytes for Chunk::new # Possible reasons: # The system is […]

String.substring vs String .split

我有一个逗号分层字符串,当调用String.split(“,”)它返回一个大约60的数组大小。在特定用例中,我只需要获取将从数组返回的第二个值的值。 所以例如”Q,BAC,233,sdf,sdf,”我想要的只是第一个’,’之前和第二个’,’之前的字符串的值。 我对性能的问题是我最好使用子字符串或使用split方法解析它,然后获取数组中的第二个值? 任何输入将不胜感激。 这种方法每秒会被调用数百次,因此我理解有关性能和内存分配的最佳方法非常重要。 -Duncan

为什么xmx和top之间存在内存使用差异?

我将jvm的xmx设置为4 G,但是在运行一段时间后,当我使用top来查看内存时,它显示了使用12 G内存的进程。 那么xmx究竟意味着什么? 如果我想将jvm内存限制为4G,我该怎么办? 命令行:-server -Xms4g -Xmx4g 另一个相关的问题:) 如果gc发生了,那么年轻一代不再使用的对象的空间是否会被JVM不可避免地释放出来? 或者其中一些留给下一个gc? 谢谢

指针 – 减少内存消耗

我一直在为OpenGL练习编写Minecraft副本(我猜多少),但是在编写基本渲染API之后,我注意到真正的Minecraft使用了很多或内存 – 大约800MB! 我完全可以理解为什么这与它必须记住的所有块以及生成器的怪物和可能的地形数据…我问自己“这个块与那个块完全相同……它们可以在代码中吗? “ 并且记得C ++有指针,所以我试图在Java中做同样的事情我想到的唯一方法,创建每个块的一个静态实例而不使用new关键字,这是最好的方法吗? 它似乎肯定有帮助..如果可能的话,我仍然希望它更好吗? 这是有问题的课程.. public abstract class Block { public static DirtBlock Dirt = new DirtBlock(); public static GrassBlock Grass = new GrassBlock(); public static RedstoneOreBlock RedstoneOre = new RedstoneOreBlock(); public static TNTBlock TNT = new TNTBlock(); public static MonsterSpawnerBlock Monserspawner = new MonsterSpawnerBlock(); public static BedrockBlock Bedrock = new […]