一.JVM内存管理

1.1JVM运行时数据区

1.1.1程序计数器:记录当前线程正在执行的字节码指定的地址(行号)

为什么需要它:程序容易被打断

1.1.2虚拟机栈:存储当前线程运行方法时所需要的数据、指令、返回地址

1.1.3本地方法栈:和虚拟机栈类似,存储的是native方法

1.1.4方法区:类信息、常量(1.7移至堆)、静态变量、JIT(编译好的代码等数据 1.7移至堆)

1.1.5堆:存放所有实例对象和数组

设置:启动时分配的内存:-Xms,最大内存 -Xmx

1.2JVM内存模型

1.3JVM垃圾回收(GC)

判断对象是否存活

内存泄漏:对象没有被回收 例:对象出栈时没有置空

内存溢出:内存不够了

1.4JDK提供的工具

jps 虚拟机进程状况

jstat 虚拟机统计信息监控工具

jmap Java内存映像区域

jstack Java堆栈跟踪工具

jconsole Java监视与管理控制台

Java虚拟机JVM详解的更多相关文章

  1. JVM(二)Java虚拟机组成详解

    导读:详细而深入的总结,是对知识"豁然开朗"之后的"刻骨铭心",想忘记都难. Java虚拟机(Java Virtual Machine)下文简称jvm,上一篇我 ...

  2. JVM(Java虚拟机)详解(JDK7)

    1.Java内存区域 运行时数据区域: Java 虚拟机在执行Java程序时,定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁.另外一些则是与线程 ...

  3. Elasticsearch Java 虚拟机配置详解

    Elasticsearch对Java虚拟机进行了预先的配置.通常情况下,因为这些配置的选择还是很谨慎的,所以你不需要太关心,并且你能立刻使用ElasticSearch. 但是,当你监视ElasticS ...

  4. Elasticsearch Java虚拟机配置详解(转)

    引言: 今天,事情终于发生了.Java6(Mustang),是2006年早些时候出来的,至今仍然应用在众多生产环境中,现在终于走到了尽头.已经没有什么理由阻止迁移到Java7(Dolphin)上了. ...

  5. Java虚拟机组成详解

    导读:详细而深入的总结,是对知识“豁然开朗”之后的“刻骨铭心”,想忘记都难. Java虚拟机(Java Virtual Machine)下文简称jvm,上一篇我们对jvm有了大体的认识,进入本文之后我 ...

  6. Java虚拟机内存详解

    概述 Java虚拟机会自动管理内存,不容易出现内存泄漏和内存溢出问题.Java虚拟机会在执行过程中将管理的内存分为若干个不同的数据区域. 运行时数据区域 在jdk1.8之前的版本与1.8版本略有不同, ...

  7. JAVA对象头详解(含32位虚拟机与64位虚拟机)

    为什么要学习Java对象头 学习Java对象头主要是为了解synchronized底层原理,synchronized锁升级过程,Java并发编程等. JAVA对象头 由于Java面向对象的思想,在JV ...

  8. Java Class文件详解

    作者:禅楼望月(http://www.cnblogs.com/yaoyinglong) Java Class文件中包含以下信息: [+]view code ClassFile { u4 magic;  ...

  9. Java类加载器详解

    title: Java类加载器详解date: 2015-10-20 18:16:52tags: JVM--- ## JVM三种类型的类加载器- 我们首先看一下JVM预定义的三种类型类加载器,当一个 J ...

随机推荐

  1. Vue.js官方文档学习笔记(二)组件化应用的构建

    组件化应用的构建 组件化应用允许我们使用小型.独立和通常可复用的组件构建大型应用. Vue注册组件 Vue.component('todo-item',{template:'<li>这是个 ...

  2. 17.AutoMapper 之配置(Configuration)

    https://www.jianshu.com/p/031ff68797dd 配置(Configuration) 通过构造函数创建并初始化MapperConfiguration实例: config = ...

  3. java判断一个单向链表是否有环路

    今天刷LeetCode刷到一道这样的题,详情参见(https://leetcode-cn.com/problems/linked-list-cycle/) ADT: class ListNode { ...

  4. 如何导入GitHub下的vue项目 并启动

    如何运行  下载的GitHub项目 一 准备工作: Node.js环境(npm包管理器) vue-cli 脚手架构建工具 cnpm npm的淘宝镜像 二 安装node.js 略 cmd 输入node ...

  5. ES的索引、type、document、filer、mapping、id

    一.ES的存储结构 1.索引 es 中存储数据的基本单位,比如说你现在要在 es 中存储一些订单数据,你就应该在 es 中创建一个索引 order_idx,所有的订单数据就都写到这个索引里面去.看了一 ...

  6. UIWebView与JS的交互

    IOS-的UIWebView UIWebVew是ios开发中较为常用的一个控件.其可以打开网页,加载html,打开文档等.当我们在开发中需要用到一些显示页面时,UIWebView是一个很好的选择. 创 ...

  7. 启动VMware出现报错:The VMware Authorization Service is not running

    出现The VMware Authorization Service is not running.报错的根本原因是开机没有启动"VMware Authorization Service&q ...

  8. PAT Basic 1039 到底买不买 (20 分)

    小红想买些珠子做一串自己喜欢的珠串.卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖.于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有多少多余的珠子 ...

  9. Filter(过滤器) 和 interceptor(拦截器)的区别

    Filter(过滤器) 和 interceptor(拦截器)的区别 1.拦截器是基于java反射机制的,而过滤器是基于函数回调的. 2.过滤器依赖于Servlet容器,而拦截器不依赖于Servlet容 ...

  10. git常用的操作命令

    设置git用户名/邮箱: $ git config user.name 'github用户名' $ git config user.email '邮箱' 从指定分支切换新分支: git checkou ...