
jvm
文章平均质量分 74
v_ZSW
这个作者很懒,什么都没留下…
展开
-
jvm内存区域
概述jvm内存分为几个区域: - 程序计数器 - 虚拟机栈 - 本地方法栈 - 堆 - 方法区 - 运行时常量池 - 直接内存 这些内存区域是在java进程中细分的,为java程序提供服务 不同的区域存储的内容不一样,生命周期的也不一样内存区域程序计数器这个就跟处理器中的程序计数器的功能差不多,是记录下一条字节码的地址 不过处理器的程序计数器是为进程服务的,jvm中的程序计数器是原创 2016-11-05 15:12:40 · 305 阅读 · 0 评论 -
jvm内存溢出分析
概述jvm中除了程序计数器,其他的区域都有可能会发生内存溢出内存溢出是什么?当程序需要申请内存的时候,由于没有足够的内存,此时就会抛出OutOfMemoryError,这就是内存溢出内存溢出和内存泄漏有什么区别?内存泄漏是由于使用不当,把一部分内存“丢掉了”,导致这部分内存不可用。 当在堆中创建了对象,后来没有使用这个对象了,又没有把整个对象的相关引用设为null。此时垃圾收集器会认为这个对象是需原创 2016-11-07 13:43:23 · 404 阅读 · 0 评论 -
从源代码到Runtime发生的重排序
源代码和Runtime时执行的代码很可能不一样,这是因为编译器、处理器常常会为了追求性能而改变执行顺序。然而重排序很危险,很有可能使得运行结果和预想的不一样,特别是当重排序共享变量时。 从源代码到Runtime需要经过三步的重排序:编译器重排序->指令重排序->内存系统重排序编译器重排序。原创 2017-12-22 15:49:03 · 395 阅读 · 0 评论