Tag: 内存外

即使我回收位图,内存使用量也不会减少

我有A和B活动。 当我从活动A开始活动B时,我在活动B上设置静态位图变量。我在屏幕上显示该位图并旋转它。 当活动B完成后,我在onDestroy()方法上回收所有位图,但内存使用量没有减少。 @Override protected void onDestroy() { super.onDestroy(); if (bitmap90 != null) { bitmap90.recycle(); bitmap90 = null; } if (bitmap180 != null) { bitmap180.recycle(); bitmap180 = null; } if (bitmap270 != null) { bitmap270.recycle(); bitmap270 = null; } if (mBitmap != null) { mBitmap.recycle(); mBitmap = null; } if (((BitmapDrawable) ivOriginal.getDrawable()).getBitmap() != null) { […]

处理大量元素时,Hibernate内存不足exception

我正在尝试处理重量级元素(图像)的集合。 收集的大小在8000-50000条目之间变化。 但由于某些原因,在处理1800-1900条目之后,我的程序属于java.lang.OutOfMemoryError:Java堆空间。 在我理解每次调用session.getTransaction()时,commit()程序应该释放堆内存,但看起来它永远不会发生。 我做错了什么? 这是代码: private static void loadImages( LoadStrategy loadStrategy ) throws IOException { log.info( “Loading images for: ” + loadStrategy.getPageType() ); Session session = sessionFactory.openSession(); session.setFlushMode( FlushMode.COMMIT ); Query query = session.createQuery( “from PageRaw where pageType = :pageType and pageStatus = :pageStatus and sessionId = 1” ); query.setString( “pageStatus”, PageStatus.SUCCESS.name() ); query.setString( […]

旧的JaxB和JDK8 Metaspace OutOfMemory问题

我们正在开发自10年以来开发的业务应用程序(100万+ LOC)。 在切换到JDK8时,我们遇到了JDK8的元空间问题。 这似乎与com.sun.xml.ws:webservices-rt:1.4(Metro 1.4)中引用的JaxB-Version有关。 由于应用程序中的密切链接以及通过JaxB创建类/实例的传统,因此在旧库中快速切换并不简单。 目前我们正在研究这个问题。 我们创建了一个重现此行为的示例程序: import java.io.ByteArrayInputStream; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Unmarshaller; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class X { private static final String XML = “”; @XmlAttribute String test; public static void main( String[] args ) throws JAXBException, InterruptedException { System.out.println(“start”); while ( true ) { JAXBContext jc = […]