Tagged: Permgen

0

Java应用性能测试之堆内存

每一个性能工程师都需要知道Java中内存是如何工作的吗?假如你想完全解决性能瓶颈的话,我的答案是“必须的”。Java的性能管理对每一个性能工程师以及Java开发者来说都是一个梦魇,但同时又是写好Java应用必不可少的一部分。 这是一个申请新的对象和清除不使用对象(垃圾回收)的过程。Java有自动的内存管理,在后台有自动运行的垃圾回收机制来回收不使用的对象并释放内存。假如没有足够的知识和经验来了解JVM和垃圾回收是如何工作的,不知道Java的内存是如何创建的,我们工程师在执行Java应用程序的时候就很难发现对应的瓶颈是在哪里。 当分析性能瓶颈的时候,理解Java内存模块的运行是一个技术活。在我查阅了很多博客,以及结合我自身的工作经验来看,趟过了很多工作上的坑之后,慢慢理解了JVM各个部分都是如何工作的。当我开始做性能测试的时候,根本不知道什么是Java的堆,我甚至不关注Java中对象都是如何创建的,更不用说GC是如何把不同类型的不使用的对象释放的。 在我开始做Java性能测试的时候,我遇到了好几个内存相关的错误,比如 java.lang.OutOfMemoryError,也就是在那时,我开始了解Java性能测试中JVM堆和栈所扮演的不同角色。当你想要获得一些性能相关的工作时,很多公司和客户都会检查你对Java开发和Java性能调试上面的专业度,所以理解Java中内存是如何申请的是非常重要的,它可以让你写出高性能的应用,再也不会出现诸如OutOfMemoryError或者Memory...