php是怎么设计网站的,宁波公司,wordpress本地编辑,阿里云网站建设方案书这篇文章简要概述了Java 7中引入的称为自动资源管理或ARM的新功能。 文章探讨了ARM如何减少开发人员为有效释放分配的资源的JVM堆而必须编写的代码。 Java编程语言中编程的最甜蜜之处之一是对象取消分配的自动处理。 在Java世界中#xff0c;这通常被称为垃圾收集。 基本上这通常被称为垃圾收集。 基本上这意味着开发人员不必担心取消分配其代码分配的对象。 开发人员使用完该对象后他便可以使对该对象的所有引用无效然后该对象就有资格进行垃圾回收。 但是垃圾收集有其另一面。 与C / C 中的编码器完全控制内存分配和取消分配mallocfreenewdelete等不同在Java中开发人员对对象的取消分配过程没有明显的控制。 JVM管理未使用对象的垃圾回收过程而运行一个垃圾回收周期实际上取决于JVM的想法。 确实有诸如System.gc或Runtime.getRuntime。gc之类的方法调用它们指示将运行垃圾回收但是这些方法仅用于提醒JVM“也许您需要运行垃圾现在收集只是一个建议没有压力”。 JVM被完全授权忽略这些请求并且被编码为仅在真正合适时运行垃圾回收。 因此在实践中始终建议开发人员不要相信System.gc或Runtime.getRuntime。gc将触发完整的垃圾回收从而不要构建其程序逻辑。 无可否认自动垃圾收集为提高开发人员的生产力做了多少工作。 但是在某些极端情况下垃圾回收不足以保持“干净”堆其中没有未使用的对象。 尤其是当对象处理由底层操作系统提供服务的某种形式的本机资源时。 这些对象包括但不限于IO流数据库连接等。对于此类对象开发人员必须明确释放资源。 通常这些是通过try-catch块完成的。 让我们看一个小示例该示例在完成流处理之后关闭InputStream InputStream in null;try
{in new FileInputStream(new File(test.txt);//do stuff with in
}
catch(IOException ie)
{//SOPs
}
finally
{//do cleanup
} 以上看起来不错干净 但是一旦我们尝试通过finally块中的in.close关闭输入流就需要用try-catch块将其包围该块捕获已检查的异常IOException。 因此代码示例将转换为 InputStream in null;try
{in new FileInputStream(new File(test.txt));//do stuff with in
}
catch(IOException ie)
{//SOPs
}
finally
{try{in.close();}catch(IOException ioe){//cant do anything about it}
} 现在上面的代码看起来很肿并且在不同层次结构中有多种检查异常我们需要更多的catch子句。 很快代码变得冗长且难以维护更不用说代码失去了其最初的简洁外观甚至吸引了人们的目光。 但是有个好消息。 Java 7通过新的try-catch块使此操作更容易。 使用此功能我们可以避免finally块本身。 这是我们的做法 try(InputStream in new FileInputStream(new File(test.txt))
{//do stuff with in
}
catch(IOException ie)
{//SOPs
} 上面的代码块将自己进行清理。 通过引入新接口java.lang.AutoCloseable使其成为可能该接口定义了单个方法void closethrows Exception 。 使用上述语法可以自动关闭d此接口子类型的对象。 以上功能适用于实现AutoCloseable接口的任何类的对象。 最好的部分是即使我们在try块中初始化了多个AutoCloseable实例它也会为所有对象调用close方法即使某个对象上的某些close方法抛出任何异常。 在处理异常时如果在try块以及隐式finally块实际上已关闭AutoCloseable的块中存在任何IOException则抛出的异常将是在try块中抛出的异常而不是隐式的finally块中的那个。 但是我们仍然可以从Throwable.getSuppressed方法中获取隐式finally块异常的详细信息该方法作为Java 7中的新方法添加。 我认为自动资源管理功能或ARM是Java 7的重要补充。 编码愉快 参考 Java HotSpot博客上的JCG合作伙伴 Swaranga提供了Java 7中具有自动资源管理功能的垃圾收集 。 相关文章 Java 7尝试资源 速览Java 7 MethodHandle及其用法 Java Fork / Join进行并行编程 JDK中的设计模式 Java最佳实践 翻译自: https://www.javacodegeeks.com/2011/08/gc-with-automatic-resource-management.html