Tag: 内存

PermGen和Heap,差异及其意义

朋友们, 你能否告诉我Heap和PermGen的意义,差异和用途。 最好分别知道它们中加载了哪个类。 与Java VM规范相关的解释将非常有用 谢谢Punith

Java虚拟机上的arrays分配和访问以及内存争用

观察线程子类的以下定义(为方便起见,整个可运行的Java源文件包含在问题的末尾): final class Worker extends Thread { Foo[] array = new Foo[1024]; int sz; public Worker(int _sz) { sz = _sz; } public void run() { //Foo[] arr = new Foo[1024]; Foo[] arr = array; loop(arr); } public void loop(Foo[] arr) { int i = 0; int pos = 512; Foo v = new Foo(); […]

Java堆栈和堆内存管理

我想知道如何在以下程序中分配内存: public class MemoryClass { public static void main(final String[] args) { int i = 0; MemoryClass memoryClass = new MemoryClass(); memoryClass.myMethod(memoryClass); } private void myMethod(final Object obj) { int i = 1; String s = “HelloWorld!”; } } 现在,就我的理解而言,下图描述了内存分配的发生方式: 在上图中,堆栈存储器中的内存 , obj和s实际上是对它们放置在堆内存中的“ 实际对象 ”的引用。 以下是我想到的一系列问题: 存储的方法在哪里? 如果我在myMethod创建了另一个MemoryClass对象,JVM会在堆栈内存中再次为相同的方法分配内存吗? 如果JVM执行完成,JVM是否会释放分配给myMethod的内存,如果是这样,它将如何管理问题2中提到的情况( 仅当JVM多次为同一方法分配内存时才适用 )。 如果我只声明了s并且没有初始化它,那么JVM是否仍会为java.lang.String类的所有方法分配内存,如果是这样,为什么呢?

java中已提交内存的确切状态

我很好奇当从MemoryUsage类查询该值时,“已提交”内存的确切含义。 该类将其解释为“已提交表示保证可供Java虚拟机使用的内存量(以字节为单位)。” 这是否意味着内存正在被jvm进程使用,并且在java进程释放之前不可用于其他进程,或者它是否意味着如果java进程尝试分配高达内存量,则该进程将成功? 我意识到这可能是特定于实现的,但我只对hotspot感兴趣。

负空闲记忆

有时,此代码会打印一个负数,例如-64。 该值以KB为单位。 可能会发生什么? long memoriaInicial = Runtime.getRuntime().freeMemory() / 1024; sort(vector); System.Out.Println(memoriaInicial – Runtime.getRuntime().freeMemory()/1024);

Hibernate – java.lang.OutOfMemoryError:Java堆空间

我得到这个例外: Exception in thread “AWT-EventQueue-0” java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:2882) at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100) at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:390) at java.lang.StringBuilder.append(StringBuilder.java:119) at java.util.AbstractMap.toString(AbstractMap.java:493) at org.hibernate.pretty.Printer.toString(Printer.java:59) at org.hibernate.pretty.Printer.toString(Printer.java:90) at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:97) at org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:35) at org.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:969) at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1114) at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79) 在这段代码: Query query = null; Transaction tx= session.beginTransaction(); if (allRadio.isSelected()) { query = session.createQuery(“select d from Document as d, d.msg as m, […]

记忆游戏图形java

我正在编写一个4×4内存游戏的程序。 在这16个盒子中将是一对0-7的整数。 我已将所有这些已经随机化并正确编码。 现在我想弄清楚每次鼠标点击盒子时如何将颜色与相应的整数配对。 这里大部分是代码。 我知道这个游戏的逻辑尚未开始,但我现在更专注于displayHit方法和setColor方法。 只是张贴整个代码,因为我可能搞砸了其他地方。 /*Sets the background of your memory board to black*/ public void init() { setSize(400,400); setBackground(Color.BLACK); buildBoard(4); } /*This is main in java applets You may need to add (not change) a couple things in this method */ public void paint(Graphics canvas) { if(firstRun) //for the first run we […]

我正在创建一个库程序。 我应该将整个对象作为书籍或指针传输吗?

在我的程序中,我的书籍是对象,这些书籍保存在一个保存在库对象中的书架对象中。 在货架对象内,我有一本“参考”书,上面写着货架上藏着什么书。 但我也有一个ArrayList,它包含“参考”书的单独实例。 同样,它包含许多引用唯一对象的引用变量,它们并不都引用“参考”书。 所以我的问题是……在将图书转让给用户时,我应该将每个唯一的参考变量传送给用户并从列表中删除参考变量吗? 或….我应该废弃列表,只是将“参考”书的指针复制给用户? 注意:书架中有一定数量的书籍可以从中删除。 我意识到第一选择是浪费内存。 另外,在第二个选择中,我只是跟踪使用int变量留下的书籍数量。 我不会记录那个架子所拥有的书籍对象的数量。

Java内存泄漏 – 在程序终止时清除?

这似乎是一个是或否的问题,我希望它能在某个地方得到解答,但我当然找不到它。 java中的内存泄漏并不像C或C ++这样的语言那样经常发生,但它们可能会发生。 大多数操作系统将清除程序终止时分配的内存,但某些情况除外,例如共享内存。 当JVM退出时,这仍然是正确的吗? 如果我无意中在Java中创建内存泄漏,它将被JVM或Linux或Windows操作系统清除吗?

为什么unix和Java RunTime显示的统计数据存在差异

我的应用程序存在一些内存问题,需要帮助理解这些统计信息。 Unix“top”为我的流程显示了这些统计数据 – VSZ: 37.4g RSS: 20.0g 因此,这意味着目前交换20g用于该过程和使用中。 但是,当我使用Runtime类从我的应用程序中打印统计信息时,我得到: Runtime.totalMemory() : 9.8G Runtime.freeMemory() : 3.6G Runtime.maxMemory() : 14.3G 为什么[Runtime.totalMemory() – Runtime.freeMemory()]与RSS不匹配? 这是该进程当前使用的内存。 这两个数字之间存在巨大差异。 此外,运行时是否将未使用的内存(Runtime.freeMemory())返回给OS以供其他进程使用? 请注意,我的应用程序运行在使用共享和复制缓存设置的对等GemFire缓存系统中。 我需要优化应用程序以减少内存占用。