Tag: 内存

可以在流上计算SHA-1算法吗? 内存占用少?

我正在寻找一种方法来计算非常大的文件的SHA-1校验和,而不必立即将它们完全加载到内存中。 我不知道SHA-1实现的细节,因此想知道是否有可能这样做。 如果您了解SAX XML解析器,那么我所寻找的将是类似的东西:通过一次只将一小部分加载到内存来计算SHA-1校验和。 我发现的所有示例(至少在Java中)总是依赖于将文件/字节数组/字符串完全加载到内存中。 如果你甚至知道实现(任何语言),那么请告诉我!

String类中的substring方法导致内存泄漏

据说String类中的substring方法会导致内存泄漏。 这是真的吗? 怎么样? 有什么替代方案吗? 特别是寻找答案, 在java中可能导致内存泄漏的所有其他事情是什么? 这将有助于我在编码时保持谨慎。

Java对象的内存分配过程中的步骤

当类实例化以下对象时,内存中会发生什么? public class SomeObject{ private String strSomeProperty; public SomeObject(String strSomeProperty){ this.strSomeProperty = strSomeProperty; } public void setSomeProperty(String strSomeProperty){ this.strSomeProperty = strSomeProperty; } public String getSomeProperty(){ return this.strSomeProperty; } } 在类SomeClass1 : SomeObject so1 = new SomeObject(“some property value”); 在类SomeClass2 : SomeObject so2 = new SomeObject(“another property value”); 如何将内存分配给新实例化的对象及其属性?

设置从Eclipse运行的Java程序的内存

我正在运行Eclipse中需要大量内存的Java应用程序。 我在哪里可以放-Xmms -xms标志?

Java中的内存高效稀疏数组

(关于时间有效的稀疏数组有一些问题,但我正在寻找内存效率。) 我需要等效的List或Map 只需设置一个比以前遇到的更大的密钥,就可以按需增长。 (可以假设密钥是非负的。) 在大多数索引不为null的情况下,即当实际数据不是非常稀疏时,与ArrayList一样具有内存效率。 当索引稀疏时,消耗与非null索引的数量成比例的空间。 使用比HashMap更少的内存(因为这会自动锁定密钥并且可能不利用标量密钥类型)。 可以在分摊日志(N)时间内获取或设置元素,其中N是条目数:不必是线性时间,二进制搜索是可接受的。 在非病毒开源纯Java库中实现(最好在Maven Central中)。 有谁知道这样的实用类? 我本来期望Commons Collections有一个,但似乎没有。 我遇到了org.apache.commons.math.util.OpenIntToFieldHashMap看起来几乎正确,除了值类型是一个看似无偿的FieldElement ; 我只想要T extends Object 。 它看起来很容易编辑它的源代码更通用,但我宁愿使用二进制依赖,如果有一个可用。

使用Java的ReferenceQueue

SoftReference和WeakReference真的只在创建为实例变量时才有用吗? 在方法范围内使用它们有什么好处吗? 另一个重要的部分是ReferenceQueue 。 除了能够跟踪哪些引用被确定为垃圾之外,还可以使用Reference.enqueue()来强制注册垃圾回收对象吗? 例如,是否值得创建一个方法,该方法在对象中占用大量内存资源(由强引用保存)并创建引用以将它们排入队列? Object bigObject; public void dispose() { ReferenceQueue queue = new ReferenceQueue(); WeakReference ref = new WeakReference(bigObject, queue); bigObject = null; ref.enqueue(); } (想象一下,在这种情况下,Object表示一个使用大量内存的对象类型……比如BufferedImage或者其他东西) 这有什么现实的效果吗? 或者这只是浪费代码?

字符串在Java 8中使用了多少内存?

我最近阅读了很多关于字符串内存分配的内容,如果与Java 8相同,则无法找到任何细节。 类似”Alexandru Tanasescu”的字符串在Java 8中使用多少内存空间? 我使用64位版本。

Java中的数组以及它们如何存储在内存中

我正在尝试理解java中的数组设置。 为什么必须在创建数组后为数组中的每个对象初始化空间。 它是如何存储在内存中的: [object][object] 或者像这样: [*class]->[object] [*class]->[object] 换句话说,在内存中实际做了什么。 array[0] = new class()只返回对内存中保留位置的引用,而class[] array = new class[10]语句创建了10个指针的行,稍后由新陈述?

Java内存解释(SUN JVM)

我试图找到sun java vm的内存段的解释,这也是管理员可以理解的 。 它应该解释堆/非堆内存是什么以及不同内存池的重要性。 如果它以某种方式与jconsole视图相关,那将是一个奖励。 有网站有这样的解释吗?

Java中共享内存的任何概念

AFAIK,Java中的内存基于堆,内存从中动态分配给对象,并且没有共享内存的概念。 如果没有共享内存的概念,那么Java程序之间的通信应该是耗时的。 在C中,与其他通信模式相比,通过共享存储器进行进程间通信更快。 如我错了请纠正我。 另外,两个Java程序相互交流的最快方式是什么。