Tag: 内存

使用Java访问内存

我在内存中加载了一个程序。 现在我想直接访问内存并更改该程序内存中的OPCODE和DATA。 为此,我需要编写一个Java程序。 你能告诉我这是否可行? 如果是,请告诉我如何编写这样的程序。 提前致谢!

内存中的“null”在哪里

在java中,您不能在其声明中声明数组的大小 int[5] scores; //bad 我被告知这是因为在初始化对象之前,JVM不会在内存中分配空间。 如果您有一个实例数组变量(使用默认值null自动初始化),该变量是否指向堆中指示为null的位置?

Java内存使用 – 原语

从Algorithms第4版引用以下内容 “例如,如果你的计算机上有1GB的内存(10亿字节),你一次就不能在内存中容纳超过3200万个int值或1600万个double值。” int – 4个字节 3200万x 4 = 1.28亿字节 帮助我理解,为什么我们不能适应32万个int值,上面的128万字节大约是1GB或10亿字节的总内存消耗的1/10。

强制jvm返回本机内存

我不时在需要大量内存的eclipse任务中运行。 所以jvm在任务运行时吞下大约2-3GB的RAM,没关系。 但是一旦jvm占用了那个内存它就不会释放它而且我有一种情况,当堆中使用的内存大约为200mb,总堆大小约为3gb时,这实际上是不需要的,因为其他程序正在寻找内存。 我尝试了Max/MinHeapFreeRatio参数来强制jvm减少未使用内存的消耗。 那是我的eclipse config.ini文件: -startup plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar –launcher.library plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.100.v20110502 -vm c:/Program Files/Java/jdk1.6.0_26/bin/javaw.exe -showlocation -product org.eclipse.epp.package.jee.product –launcher.defaultAction openFile –launcher.XXMaxPermSize 256M -showsplash org.eclipse.platform –launcher.XXMaxPermSize 256m –launcher.defaultAction openFile -vmargs -Duser.name=Michael Nesterenko -Dosgi.requiredJavaVersion=1.5 -Xms512m -Xmx4096m -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=30 但这没有用,我仍然有很多未使用的内存。

使用App时Java内存使用量会增加,但在不使用时不会减少

我有一个java应用程序,使用时会占用大量内存,但是当程序没有被使用时,内存使用量不会下降。 有没有办法强制Java释放这个内存? 因为当时不需要这个内存,我可以理解保留少量内存,但Java只保留它曾经使用过的所有内存。 它也会在以后重用这个内存,但必须有一种方法可以强制Java在不需要时释放它。 System.gc无法正常工作。

当Java对象的所有成员都为null时,它会使用多少内存?

假设Java对象只占用对象引用的8个字节是正确的,只要它的所有成员都设置为null或者成员的定义是否因某种原因已经占用了实例中的空间? 换句话说,如果我有一大堆我想要节省空间的对象,我可以依靠将未使用的成员设置为null来减少内存占用吗?

Java:在循环中实例化变量:好的还是坏的样式?

我有一个简单的问题。 通常我会编写如下代码: String myString = “hello”; for (int i=0, i<10; i++) { myString = "hello again"; } 因为我认为以下不是好的样式会导致它产生太多不必要的对象。 for (int i=0, i<10; i++) { String myString = "hello again"; } 这甚至是正确的吗? 或者就是这种情况,当我有一个显式对象,如我创建的类中的对象? 如果是boolean或int怎么办? 什么是更好的编码风格? 在循环之前将它实例化一次并在循环中使用它或者每次在循环中实例化它? 为什么? 因为程序更快或更少使用存储或…? 有人告诉我,如果它是一个布尔值,我应该直接在循环中实例化它。 他说这对堆没有影响,而且变量属于循环内部会更清楚。 那么什么是正确的? 谢谢你的回答! 🙂 ==== 谢谢你的所有答案! 总之:最好在尽可能小的范围内声明一个对象。 通过声明和实例化循环外的对象没有性能改进,即使在每个循环中对象都被重新实例化。

Java对象和数组内存位置

我正在用Java编写一个支持数组的哈希表,其中键和值的类型是Object; 没有其他保证。 代码方面对我来说最简单的方法是创建一个对象来保存它们: public class Pair { public Object key; public Object value; } 然后创建一个数组 public Pair[] storage = new Pair[8]; 但是jvm如何在内存中对待它? 也就是说,arrays实际上是: 是一个指向其他地方的Pair()对象的指针数组,或者 包含实际数据? 编辑 由于对象稍后被实例化为新的Pair(),因此它们被随机放置在堆中。 有没有什么好方法可以确保它们在堆中顺序? 我是否需要使用sun.misc.unsafe做一些诡计以使其工作? 解释我的动机,如果我想尝试确保顺序项在同一个内存页中,有没有办法在Java中做到这一点?

如何避免java.lang.OutOfMemoryError:Netbeans中的PermGen空间

我正在使用Netbeans6.8中的Web应用程序开发并使用Jboss服务器来部署我的应用程序。 我能够正确运行项目,但一段时间后我得到tgis错误 java.lang.OutOfMemoryError: PermGen space : 之后我必须重启我的JBoss服务器。 有时我需要重新启动我的Netbeans IDE任何人都可以告诉我这个错误的原因以及如何避免这种情况 谢谢罗汉

使用HashMap进行Java内存管理

我正在开发一个应用程序,它将数据库中的大量数据读入Map<String,Map<String,Map>> ,对其进行处理,并使用in将处理后的报告写入电子表格-house xml writer。 整个运行大约需要12个小时。 我发现我得到了 Exception in thread “CursorController-Thread-0” java.lang.OutOfMemoryError: Java heap space at java.lang.AbstractStringBuilder.(AbstractStringBuilder.java:45) at java.lang.StringBuilder.(StringBuilder.java:68) 当我尝试编写这个jumbo文件时。 出于这个原因,我认为最好在完成处理时编写每个Map<String,Map> (注意这是一个更深的层)。 我的问题是,我怎样才能确保Map<String,Map>在我写完后不会保留在内存中,因为Map >>仍然会包含它?