- 浏览: 26752 次
最新评论
-
lin_yp:
tlde_ti 写道http://stackoverflow. ...
[Java]String内存陷阱简介 -
leaow567:
辛苦了,学习了
[Java]String内存陷阱简介 -
lin_yp:
内存分析用的是MemoryAnalyzer工具
[Java]String内存陷阱简介 -
lucky16:
同楼下啊,,
楼主用的什么tool查看的内存分析啊?
是ecl ...
[Java]String内存陷阱简介 -
来这里学java:
求教楼主使用什么工具来查看内存的??
[Java]String内存陷阱简介
文章列表
单线程和多线程场景下,增加元素/删除元素/查找元素,HashSet/HashMap的性能均比ArrayList/LinkedList高,
ArrayList的查找元素比LinkedList性能高
多线程场景下,ConcurrentHashMap性能比HashMap高
多线程场景下,CopyOnWriteArrayList的增加元素/删除元素性能比ArrayList低,查找元素性能比ArrayList高,
原因:查找时没有任何锁操作, 而增加删除时每次都会创建一个新数组,且复制数据时没有用System.arrayCopy,性能比ArrayList低
CopyOnWriteArrayS ...
首先了解一下理论知识:
字节码:
Class文件是8位字节流,按字节对齐。之所以称为字节码,是因为每条指令都只占据一个字节,所有的操作码和操作数都是按字节对齐的。如:0x03表示iconst_0
Class文件的头4个字节称为魔数(Magic Number),它的唯一作用是用于确认该文件是否是能被JVM接受的Class文件。魔数值为:0xCAFEBABE。
紧接着魔数的4个字节是Class文件的版本号:第5和第6字节是次版本号(Minor Version),第7和第8字节是主版本号(Major Version)。Java的版本号从45开始的,JDK6的版本号是50。
javap –ve ...
JVM内存组成:1、程序计数器:是一块较小的内存空间,它的作用是当前线程所执行的字节码的行号指示器。2、Java虚拟机栈:存放每个线程执行方法的局部变量区、操作数栈。 本地方法栈:执行Native方法。Sun Hotspot虚拟机把本地方法栈与虚拟机栈合二为一。3、Java堆4、方法区(Perm代)5、直接内存(Direct Memory),NIO使用Native函数库直接分配堆外内存。直接内存的分配不受Java堆大小的限制,在32位操作系统上,如果Xmx+Perm+虚拟机栈+直接内存>2G,导致OOM,但在windows下,一般java内存分配不能超过1.3G左右,否则Java进程启 ...
ASM3.0指南翻译.pdf 下载
Sun JVM Attach API是Sun JVM中的一套非标准的可以连接到JVM上的API,从JDK6开始引入,除了Solaris平台的Sun JVM支持远程的Attach,在其他平台都只允许Attach到本地的JVM上。
一、Sun JVM Attach API功能上非常简单,仅提供 ...
Java进程运行在Solaris上,如果代码中用了Runtime.getRuntime().exec(),启动一个子进程运行一些命令,可能出现子进程挂住,导致父进程退出时,父进程所占用的资源仍然没有释放,如端口等信息,用ps -ef仍然可以看到父进程的信息。用pstack可以看到fork信息,在Runtime.getRuntime().exec()挂住。
http://stackoverflow.com/questions/1160656/runtime-exec-causes-duplicate-jvm-to-hang-indefinitely-until-killed-solaris-10 ...
String 方法用于文本分析及大量字符串处理时会对内存性能造成一些影响。可能导致内存占用太大甚至OOM。
一、先介绍一下String对象的内存占用
一般而言,Java 对象在虚拟机的结构如下:•对象头(object header):8 个字节(保存对象的 class 信息、ID、在虚拟机中的状态)•Java 原始类型数据:如 int, float, char 等类型的数据•引用(reference):4 个字节•填充符(padding)
String定义:
JDK6:private final char value[];private final int offset;private ...
一、OSGi定义1、OSGi: Open Service Gateway InitiativeOSGi的定义为: The Dynamic Module System For Java, 用于构建动态化/模块化的Java系统.
2、OSGi特点:支持模块化的动态部署:基于OSGi而构建的系统可以以模块化的方式(例如jar文件等)动态的部署至框架中,从而增加、扩展或改变系统的功能可以将系统按照模块或其他方式划分为不同的Java工程,使模块从物理级别上隔离。支持模块化的封装和交互(Export-Package, Import-Package, OSGi Service面向接口面向服务)支持模块的动态 ...