`

java 内存溢出陷阱

    博客分类:
  • java
 
阅读更多
tomcat - reload
tomcat可以不重启对一个工程进行reload, 但由于源代码和class都是存放PermGen区的, reload时并不会对旧的class卸载, 所以, perm会一起增加, 多reload几次就会perm溢出


String - substring
String的substring方法内部额个final char[], 所以, substring产生的字符串是没办法回收的,
而这个方法使用很广范, split也是依赖这个方法的, 如果你是通过一个1m的字符串里, 截取里面的4byte的话., 那么, 这个对象的内存占用虽然为4byte, 但回收内存实际为1m, 而这1m, 在这个对象活动期间是一直占坑的
常见场景, 一个全局Map<String, String> map, 里面的String大量通过substring生成
分享到:
评论

相关推荐

    Android防止内存溢出浅析

    在Android开发中,防止内存溢出是一个至关重要的任务,因为Android设备的内存资源相对有限,尤其是在Dalvik虚拟机中,其最大堆大小通常只有16MB。本文将深入探讨Android平台上的内存管理机制,以及如何避免内存泄露...

    java陷阱常见面试题

    1. 描述Java内存模型中的线程可见性是如何保证的。 2. 举例说明Java中可能导致内存泄漏的情况。 3. 解释什么是死锁,并给出一个简单的死锁示例。 4. 分析ArrayList和LinkedList在不同场景下的性能差异。 5. 在多线程...

    IT职场:程序员Java面试中的陷阱

    了解这些知识有助于分析和解决问题,例如,如何通过JVM参数调整来优化应用性能,或者如何定位和解决内存溢出问题。 工具的使用也是Java开发者必备技能之一。面试官可能询问你是否熟悉常用的开发工具,如IDEA、Git、...

    Java面试中的陷阱

    ### Java面试中的陷阱详解 #### 一、final, finally, finalize 的区别 1. **final**:在Java中,`final`是一个关键字,用于声明一个不可更改的对象或变量。如果一个类被声明为final,那么它不能被继承;如果一个...

    Java十大低级错误

    Java编程中的十大低级错误是每位开发者应当避免的常见编程陷阱。这些错误不仅影响代码的可读性,还可能导致程序运行时出现异常或性能下降。以下是对这些错误的详细解释和改进建议: 1. **命名不规范**:方法和变量...

    Java陷阱一箩筐笔试题

    - 需要有GC因为Java内存管理是自动的,程序员不必手动释放内存。 9. **String对象创建**: - `String s = new String("xyz");` 创建了两个对象:一个在字符串常量池中,一个在堆中。 10. **Math.round**: - `...

    Java.Bug模式详解

    理解Java内存模型,合理设置堆大小,避免创建过大的对象,及时清理不再使用的对象,使用WeakReference和SoftReference管理对象,可以帮助防止内存溢出。 以上仅是部分常见的Java Bug模式,实际开发中还会有更多复杂...

    Java使用SNMP4J实现snmp trap接口发送消息_20170808_LK

    当网络设备发生特定事件时,如接口故障、内存溢出等,设备会自动向预设的管理站发送Trap消息,以便管理员能及时了解并处理问题。本文将详细讲解如何使用Java的SNMP4J库来实现SNMP Trap接口,发送这些消息。 首先,...

    java解惑(源代码+教程)

    1. **类型转换与数据溢出**:Java中整型数据之间的转换可能导致数据溢出,这在处理数值运算时必须小心。例如,将大整数强制转换为较小类型会导致数据丢失。 2. **自动装箱与拆箱**:Java 5引入了自动装箱和拆箱机制...

    JAVA.BUG模式详解

    在Java编程中,"BUG模式"通常指的是程序员在编写代码时容易犯的一些常见错误或陷阱,这些错误可能导致程序运行不正常、性能下降甚至系统崩溃。理解并避免这些BUG模式是提高Java程序质量和效率的关键。本篇文章将深入...

    JAVA基础易错总结(50%你不知道)

    大鹏的"JAVA基础易错总结"涵盖了这些重要的知识点,并且可能还揭示了一些鲜为人知的陷阱。通过深入学习和实践,开发者可以避免这些常见错误,提升Java编程的水平。希望这份资料能成为你Java学习旅程中的宝贵财富。

    java问题定位技术+性能优化

    - 通常建议不超过2GB,避免内存溢出。 - **3.5.3 特殊场合下JVM参数调优** - 针对不同的应用场景调整JVM参数,如使用G1垃圾回收器。 - **3.5.4 Java完全垃圾回收** - 使用`System.gc()`强制触发垃圾回收,但不推荐...

    Java 自动转换的资源

    字符在内存中以Unicode编码存储,因此可以直接用 `char` 变量参与整数运算,或者通过 `(char)intValue` 将整数转换为字符。 7. **字符串转换**: - 使用 `Integer.parseInt()` 或 `Integer.valueOf()` 方法可以将...

    java-puzzlers-sampler_java_Joshua_

    不正确地使用它们可能导致内存溢出或者运行时错误。 5. **异常处理**:Java强制使用`try-catch-finally`块处理异常,但错误的异常处理策略可能导致程序逻辑混乱,例如不恰当的异常捕获和处理,或者在`finally`块中...

    Java OCA 考试指南带highlight

    - 深入理解Java内存模型,特别是在多线程环境下对变量的访问和修改。 考生在准备Java OCA考试时,应重点学习以上知识点,深入理解概念并能够解决实际编程问题。同时,参考指南书中的重点和易错点,对于提高考试通过...

    java程序员认证模拟题

    8. **JVM与内存管理**:了解Java虚拟机(JVM)的工作原理,包括内存区域(堆、栈、方法区等)、垃圾收集机制和内存溢出问题的处理。 9. **泛型**:泛型引入了类型安全,使得容器可以存储特定类型的元素。考生应能...

    区别Java中堆与栈区别Java中堆与栈

    在申请后系统的响应中,栈只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出。堆则首先应该知道操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第...

    java 反模式 卷3 pdf

    这些框架的反模式也是重要的学习内容,例如,不合理的Struts配置可能导致性能瓶颈,而滥用Hibernate的懒加载可能导致内存溢出。 "Java培训 J2EE培训 DOTNET培训 - 51培训网.url"进一步表明,这本书不仅适用于有经验...

    关于Java开发的五百个常见问题

    6. **JVM内存管理**:垃圾回收、内存泄漏、堆栈溢出等是开发者常见的困惑,理解JVM的工作原理能有效避免这些问题。 7. **反射机制**:Java反射允许运行时动态访问类的信息,如方法、字段和构造器,这在插件开发、元...

    JAVA注意事项

    4. **内存管理**:虽然Java有垃圾回收机制,但过度创建对象仍可能导致内存溢出。合理使用对象池和局部变量,减少无用对象的产生。 5. **类型转换**:强制类型转换可能导致数据丢失,因此在转换前务必检查类型兼容性...

Global site tag (gtag.js) - Google Analytics