jvm 内存整理 -----学习】的更多相关文章

  分为:方法区 ,堆 ,栈 ,本地栈 ,程序计数器 1.程序计数器       保存当前线程执行的字节码行号指示器,解释器工作时,都是通过改变计数器的值来获取下一条程序指令,循环.异常.跳转.分支.线程恢复都要依赖程序计数器.     对于多核系统(实际一个确定时刻,cpu只能执行线程中的一条指令),线程的恢复都是通过计数器来保存的,每个线程都有自己独立的计数器,称为“线程私有的”内存.     如果线程正在执行的是java方法,则计数器记录的是当前线程的指令地址:如果执行的是本地方法,则保存…
I.JVM进程的生命周期 JVM实例的生命周期和java程序的生命周期保持一致,即一个新的程序启动则产生一个新的JVM进程实例,程序结束则JVM进程实例伴随着消失.那么程序启动和程序终止就是JVM实例生命周期的两个边界,两个边界点可以这么理解:一个拥有程序入口(main函数)的class在执行main方法时,相应的JVM就被创建了(即JVM生命周期的起点),当由此main函数启动的所有非守护线程都终止时,JVM即退出(JVM实例生命周期的终点).举个实例来描述一下JVM实例的生命周期: (1)…
昨天面试了两家,备受打击,问的多的就是jvm内存,然额真的是一头雾水.工作中用到的真是少之又少,面试还得问道, 今天恶补了下,在此作以下总结: jvm分为5部分 1.程序计数器 jvm支持多线程运行,每个线程都有自己的程序计数器,如果执行的是jvm的方法,那保存的是当前指令的地址,如果执行是native方法,则为空 2.java栈 栈里面是每个栈帧,每个栈帧对应一个方法.栈帧里包括局部变量表(基本类型和引用地址),操作数栈,常量池的引用,方法的返回地址 3.本地方法栈 存储的为native方法…
知其然,不知其所以然 !在技术的海洋里,前路漫漫,我一直在迷失着自我. 欢迎访问我的csdn博客,我们一同成长! "不管做什么,只要坚持下去就会看到不一样!在路上,不卑不亢!" 博客首页:http://blog.csdn.net/u010648555 在下面的题目来自于我要加的一个QQ群,然后要加这个QQ群,首先要通过进阶考核,也就是下面这些题,当我看到这些题目的时候.发现这些题目很常见,但是细细去研究,发现每一个问题的知识点都是特别的多也比较深奥! 1,什么是线程安全 (参考书:ht…
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来. 概述: 说起垃圾收集(Garbage Collection,下文简称GC),大部分人都把这项技术当做Java语言的伴生产物.事实上GC的历史远远比Java来得久远,在1960年诞生于MIT的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语言.当Lisp还在胚胎时期,人们就在思考GC需要完成的3件事情:哪些内存需要回收?什么时候回收?怎么样回收? 经过半个世纪的发展,目前的内存分配策略…
今天线上的hadoop集群崩溃了,现象是namenode一直在GC,长时间无法正常服务.最后运维大神各种倒腾内存,GC稳定后,服务正常.虽说全程在打酱油,但是也跟着学习不少的东西. 第一个问题:为什么会频繁GC 有过JVM经验的开发者都应该知道,GC是在内存不够时,JVM自动进行的自我救赎(删除不用的数据,释放内存空间).那么NameNode在什么情况下会进行GC呢?在解释这个问题之前,需要明白GC的几种级别,以及触发的条件: Minor GC:清理新生代,一般都是复制回收算法 Full GC:…
上周末搬家后,家里的宽带一直没弄好,跟电信客服反映了N遍了终于约了个师傅明天早上来迁移宽带,可以结束一个多星期没网的痛苦日子了.这段时间也是各种忙,都一个星期没更新博客了,再不写之前那种状态和激情都要慢慢褪去了,总觉得心里慌的一逼,这怎么行呢?!趁明天周末,在公司电脑上记录下这周的一些学习内容.近期在看一本很经典的java书籍:<深入理解java虚拟机 第二版>,几年前也翻过,但那时候功力不够,不太能看懂就没看了.现在回过头来看,发现确实写的很好,很多知识点都能理解了,而且讲的也很有深度,收获…
在Java进阶知识的学习中,JVM都是避不过去的一关,我个人对于JVM的理解其实就是相当于在操作系统的外层再加了一层中间层,从来屏蔽了具体硬件之间的不同实现,使得Java实现了最重要的特性:一次编译,处处运行.本分类中的内容都是基于<深入理解Java虚拟机>中的内容以及网络上面博客整理,外加自己的理解. 今天的内容是JVM中的基础:JVM内存模型 JVM内存模型 JVM中的内存模型主要分为五大块:程序计数器,虚拟机栈,本地方法栈,堆,方法区. 其中,方法区与堆是所有线程共享使用的区域,而虚拟机…
从诞生至今,20多年过去,Java至今仍是使用最为广泛的语言.这仰赖于Java提供的各种技术和特性,让开发人员能优雅的编写高效的程序.今天我们就来说说Java的一项基本但非常重要的技术内存管理 了解C语言的同学都知道,在C语言中内存的开辟和释放都是由我们自己来管理的,每一个new操作都要对于一个delete操作,否则就会参数内存泄漏和溢出的问题,导致非常槽糕的后果.但在Java开发过程中,则完全不需要担心这个问题.因为jvm提供了自动内存管理的机制.内存管理的工作由jvm帮我们完成.这样我们就不…
Overview 学习JVM首先需要了解一下JVM管理的内存是如何分布的,在看了<深入理解Java虚拟机>和一些博文之后,我准备自己记录一下学习的过程. 下图是JVM中运行时数据区的大致示意图,可以看到主要分为两种内存区域,一种是线程私有的内存区,另一种是所有线程共享的区域.下面会详细描述每个区域存储哪些数据. 程序计数器 我们知道JVM是通过解释Java编译之后的字节码来执行程序的,那么JVM是怎么知道执行到哪一行字节码了呢?答案就是通过程序计数器来指示当前线程执行的字节码行号.我认为应该是…