最近因项目存在内存泄漏,故进行大规模的JVM性能调优 , 现把经验做一记录。 一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为: New(年轻代) Tenured(年老代) 永久代(Perm) 其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx: ...
分类:
其他好文 时间:
2018-01-20 14:01:45
阅读次数:
200
垃圾回收 垃圾回收主要解决三个问题(回收哪些Which,什么时候回收WHEN,如何回收HOW) 一、回收哪些 这三个问题,最主要的还是第一个,Which回收哪些,评断回收还是不回收的标准是看对象是否被引用 引用分为四种: 强引用:一个对象被一个引用所指向。绝对不会被JVM回收的,即使内存不过用 软引 ...
分类:
其他好文 时间:
2018-01-04 14:15:40
阅读次数:
149
一、JVM 内存模型 根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。 1、虚拟机栈:每个线程有一个私有的栈,随着线程的创建而创建。栈里面存着的是一种叫“栈帧”的东西,每个方法会创 建一个栈帧,栈帧中存放了局部变量表(基本数据类型和对象引用)、操作数栈、方 ...
分类:
编程语言 时间:
2017-12-20 17:52:58
阅读次数:
173
<!--done--> Java8内存模型—永久代(PermGen)和元空间(Metaspace) 查看原文点击传送门:http://www.cnblogs.com/paddix/p/5309550.html 提示:本文做了一些修改 一、JVM 内存模型 根据 JVM 规范,JVM 内存共分为虚拟机 ...
分类:
编程语言 时间:
2017-12-16 16:04:41
阅读次数:
291
1. 前言 内存分配与回收策略 JVM堆的结构分析(新生代、老年代、永久代) 对象优先在Eden分配 大对象直接进入老年代 长期存活的对象将进入老年代 动态对象年龄判定 空间分配担保 JVM堆的结构分析(新生代、老年代、永久代) 对象优先在Eden分配 大对象直接进入老年代 长期存活的对象将进入老年 ...
分类:
编程语言 时间:
2017-12-15 00:51:23
阅读次数:
255
引入垃圾回收 哪些内存需要回收? 引用计数法 可达性分析 如何回收 Marking 标记 Normal Deletion 清除 Deletion with Compacting 压缩 为什么需要分代收集? JVM的分代 新生代 老年代 永久代 分代垃圾收集过程详述 引入垃圾回收 程序计数器、 虚拟机 ...
分类:
编程语言 时间:
2017-12-13 17:24:24
阅读次数:
157
你注意到了吗?JDK 8早期可访问版本已经提供下载了,java 开发人员可以使用java 8 提供的新的语言和运行特性来做一些实验。其中一个特性就是完全的移除永久代(Permanent Generation (PermGen)),这从JDK 7开始Oracle就开始行动了,比如:本地化的String ...
分类:
Web程序 时间:
2017-12-01 13:46:08
阅读次数:
345
撤销永久代,引入元空间: 在 JDK 1.8 中,HotSpot 已经没有 “PermGen space”这个空间了,取而代之是一个叫做 Metaspace(元空间) 的东西。 Java7中已经将字符串常量池从永久代移除,在Java 堆(Heap)中开辟了一块区域存放字符串常量池。而在Java8中, ...
分类:
编程语言 时间:
2017-11-11 19:49:44
阅读次数:
156
visual gc 是 visualvm 中的图形化查看 gc 状况的插件。 具体详细介绍可参照: http://www.oracle.com/technetwork/java/visualgc-136680.html 本文也是在此基础上进行的整理归纳。 OUTPUT FORMAT visual g ...
分类:
其他好文 时间:
2017-11-09 16:31:29
阅读次数:
249
来源:java2000_wl,blog.csdn.net/java2000_wl/article/details/8009362 1.Java技术体系模块图 2:Jvm内存区域模型 1.方法区 也称”永久代” 、“非堆”, 它用于存储虚拟机加载的类信息、常量、静态变量、是各个线程共享的内存区域。默认 ...
分类:
其他好文 时间:
2017-10-16 12:26:05
阅读次数:
136