`

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生成
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics