
JVM
XiaoGuang-Xu
主要从事Hadoop Spark Flink,兴趣爱好:数据挖掘和机器学方向
展开
-
Java垃圾回收机制以及内存泄露
Java垃圾回收机制以及内存泄露1、Java的内存泄露介绍首先明确一下内存泄露的概念:内存泄露是指程序运行过程动态分配了内存,但是在程序结束的时候这块内存没有被释放,从而导致这块内存不可用,这就是内存泄露,重启计算机可以解决这个问题,但是有可能再次发生内存泄露,内存泄露与硬件没有关系,它是软件设计的缺陷所导致的。Java发生内存泄露的原因很明确,就是长声明周期对转载 2014-12-16 10:02:35 · 660 阅读 · 0 评论 -
几种简单的负载均衡算法及其Java代码实现
什么是负载均衡负载均衡,英文名称为Load Balance,指由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。负载均衡能够平均分配客户请求到服务器阵列,借此提供快速获取重要数据,解决大量并发访问服务转载 2017-06-07 13:49:48 · 471 阅读 · 0 评论 -
Java中堆(heap)和堆栈(stack)有什么区别
1: java中堆(heap)和堆栈(stack)有什么区别stack 和 heep 都是内存的一部分stack 空间小,速度比较快, 用来放对象的引用heep 大,一般所有创建的对象都放在这里。栈(stack):是一个先进后出的数据结构,通常用于保存方法(函数)中的参数,局部变量.在java中,所有基本类型和引用类型都在栈中存储.栈中数据的生存空间一般在当前scope转载 2014-12-16 09:41:24 · 887 阅读 · 0 评论 -
一个对象占用多少字节?
一个对象占用多少字节?http://yueyemaitian.iteye.com/blog/2033046 老早之前写过一篇博客,是关于一个Integer对象到底占用多少字节的,现在看来,那篇文章竟然计算错了。这次再去计算,是因为之前写的一篇关于字长的文章里,看到了hotspot jvm里,对象占用空间是8字节对齐的,再加上之前关于字节那文章里带着一点转载 2017-06-08 11:51:25 · 504 阅读 · 0 评论 -
查看Java对象在内存中的布局
查看java对象在内存中的布局http://yueyemaitian.iteye.com/blog/2034305 接着上篇《一个对象占用多少字节?》中遇到的问题: UseCompressOops开启和关闭,对对象头大小是有影响的,开启压缩,对象头是4+8=12byte;关闭压缩,对象头是8+8=16bytes。这个如何观察验证呢?转载 2017-06-08 11:54:04 · 608 阅读 · 0 评论 -
调优JVM内存,并解决OutOfMemoryError,StackOverflowError等异常问题
调优JVM内存,并解决OutOfMemoryError,StackOverflowError等异常问题JVM 调优,首先应从内 存开始,尤其是在真正的的web服务部署的时候。因为真正的web服务会比开发的时候花费更多的内 存,用来处理多用户并发的情况。本人多次吃过这方面的亏,所以整理一下,希望能给别人以帮助。这个年头变啦,内 存变得如大白菜,每个新装的机器都2G转载 2016-10-27 09:40:23 · 447 阅读 · 0 评论 -
JVM的堆(heap)、栈(stack)和方法区(method)
JVM主要由类加载器子系统、运行时数据区(内存空间)、执行引擎以及与本地方法接口等组成。其中运行时数据区又由方法区Method Area、堆Heap、Java stack、PC寄存器、本地方法栈组成。堆区:1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)2.jvm只有堆区(heap)和方法区(下面)被所有线程共享,堆中不转载 2017-07-08 12:31:09 · 339 阅读 · 0 评论 -
Minor GC、Major GC和Full GC之间的区别
Minor GC、Major GC和Full GC之间的区别本文由 ImportNew - 光光头去打酱油 翻译自 javacodegeeks。欢迎加入翻译小组。转载请见文末要求。在 Plumbr 从事 GC 暂停检测相关功能的工作时,我被迫用自己的方式,通过大量文章、书籍和演讲来介绍我所做的工作。在整个过程中,经常对 Minor、Major、和 Full GC 事件的转载 2017-07-30 15:24:31 · 406 阅读 · 0 评论 -
聊聊JVM(四)深入理解Major GC, Full GC, CMS
聊聊JVM(四)深入理解Major GC, Full GC, CMS很多人都分不清Major GC, Full GC的概念,事实上我查了下资料,也没有查到非常精确的Major GC和Full GC的概念定义。分不清这两个概念可能就会对这个问题疑惑:Full GC会引起Minor GC吗?经过一系列的查找和对JVM表现的分析,基本可以给Full GC和Major GC下一转载 2017-07-30 16:35:44 · 469 阅读 · 0 评论 -
JVM堆内存相关的启动参数:年轻代、老年代和永久代的内存分配
如果想观察JVM进程占用的堆内存,可以通过命令工具jmap或者可视化工具jvisualvm.exe。JVM这些启动参数都拥有默认值,如果想了解JVM的内存分配策略,最好手动设置这些启动参数。再通过JDK提供的工具的统计结果,进行对比,就比较容易理解这些内存分配的理论知识。运行环境是win7 32位操作系统,JDK1.7.0_60版本。测试代码和JVM启动参数如下:[java转载 2017-08-03 16:03:27 · 474 阅读 · 0 评论 -
Java堆内存的划分
根据对象的存活率(年龄),Java对内存划分为3种:新生代、老年代、永久代1、新生代: 比如我们在方法中去new一个对象,那这方法调用完毕后,对象就会被回收,这就是一个典型的新生代对象。现在的商业虚拟机都采用这种收集算法来回收新生代,新生代中的对象98%都是“朝生夕死”的,所以并不需要按照1:1的比例来划分内存空间,而是将内存分为一块比较大的Eden空间和两块较小的Surviv转载 2017-03-23 09:13:18 · 365 阅读 · 0 评论 -
Java GC基本算法
Java GC基本算法1、JVM内存组成结构JVM内存结构由堆、栈、本地方法栈、方法区等部分组成,结构图如下所示:1)堆所有通过new创建的对象的内存都在堆中分配,其大小可以通过-Xmx和-Xms来控制。堆被划分为新生代和旧生代,新生代又被进一步划分为Eden和Survivor区,Survivor由FromSpace和ToSpace组成,结构图如下所示:新生代。新建的对象都是用新生代分配内存,Ed...转载 2017-08-10 16:16:59 · 299 阅读 · 0 评论 -
JVM性能调优
最近因项目存在内存泄漏,故进行大规模的JVM性能调优, 现把经验做一记录。一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为:New(年轻代)Tenured(年老代)永久代(Perm) 其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,Perm不属于堆内存,有虚拟机直接分配,但可以通过-XX转载 2014-12-16 09:48:17 · 623 阅读 · 0 评论 -
JVM垃圾回收二:分代垃圾回收
JVM垃圾回收二:分代垃圾回收导语不论是引用计数还是可达性分析(gcroot),都是垃圾回收的一种策略,不同的是这两个都不能直接被用于jvm,都有他们的缺点。其实这个更多的是告诉我们java中的对象引用的一些原理,为现在执行的分代垃圾回收做铺垫,了解其原理即可,多谢@不知道和@Echo的留言为什么要分代分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象...转载 2018-03-01 09:53:13 · 313 阅读 · 0 评论 -
java 虚拟机--新生代与老年代GC
原文网址: http://www.360doc.com/content/12/1023/16/9615799_243296263.shtml 摘要: 堆设置 -Xms :初始堆大小 -Xmx :最大堆大小 -XX:NewSize=n :设置年轻代大小 -XX:NewRatio=n: 设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年转载 2017-03-13 09:41:51 · 281 阅读 · 0 评论 -
Metrics介绍 学习
Metrics介绍和Spring的集成http://blog.youkuaiyun.com/smallnest/article/details/38491507Metrics-Java版的指标度量工具之一http://www.cnblogs.com/nexiyi/p/metrics_sample_1.html转载 2016-08-06 19:12:25 · 434 阅读 · 0 评论 -
深入JVM锁机制1-synchronized
目录(?)[+]线程状态及状态转换ContentionList虚拟队列EntryList自旋锁偏向锁CAS及SMP架构偏向解除总结 目前在Java中存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加的内容,其作者是大名鼎鼎的并发专家Doug Lea。本文并不比较synchronized与Lock孰优孰劣,只是转载 2014-12-16 10:23:59 · 596 阅读 · 0 评论 -
JVM类加载机制
当JVM(Java虚拟机)启动时,会形成由三个类加载器组成的初始类加载器层次结构: bootstrap classloader --引导(也称为原始)类加载器 | extension classloader --- 扩展类加载器 | system classloader ---转载 2014-12-17 09:53:47 · 1146 阅读 · 0 评论 -
详解JVM的内存管理机制
本文为详解JVM的内存管理机制,从JVM的垃圾回收机制和JVM中对象的生命周期、析构方法finalize、静态变量和内存管理有许多技巧和方式等方面为大家介绍JVM的内存管理机制。AD:我们在深入Java核心系列文章中给大家讲过JVM中的栈和局部变量。在做Java开发的时候常用的JVM内存管理有两种,一种是堆内存,一种是栈内存。堆内存主要用来存储程序在运行时创转载 2014-12-17 09:31:25 · 630 阅读 · 0 评论 -
深入JVM锁机制2-Lock
前文(深入JVM锁机制-synchronized)分析了JVM中的synchronized实现,本文继续分析JVM中的另一种锁Lock的实现。与synchronized不同的是,Lock完全用Java写成,在java这个层面是无关JVM实现的。在java.util.concurrent.locks包中有很多Lock的实现类,常用的有ReentrantLock、ReadWriteLock(实现类转载 2014-12-16 10:28:21 · 686 阅读 · 0 评论 -
Java虚拟机(JVM)中的内存设置详解
Java虚拟机(JVM)中的内存设置详解 http://www.cnblogs.com/zcshan/archive/2011/03/10/jvm.html在一些规模稍大的应用中,Java虚拟机(JVM)的内存设置尤为重要,想在项目中取得好的效率,GC(垃圾回收)的设置是第一步。PermGen space:全称是Permanent Generation space.就是转载 2014-12-18 12:09:29 · 647 阅读 · 0 评论 -
JAVA中堆栈和内存分配原理
1、栈、堆1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)3. 堆:存放所有new出来的对象。4. 静态域:存放静态成员(static定义的)5. 常量池:存放字符串常量和基本类型常量(pu转载 2013-04-14 10:13:48 · 657 阅读 · 0 评论 -
Java内存分析
Java内存分析:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://java999.blog.51cto.com/259217/134359JAVA1. register2. stackRAMJAVAJAVAJAVA3. heapRAMJAVAnew4. static storagestaticJAVA5.转载 2014-12-14 17:02:45 · 683 阅读 · 0 评论 -
内存设置
Myeclipse->preferences->myeclipse->servers->tomcat->tomcat×.×->JDK面板中的Optional Java VM arguments中添加:-Xmx1024M -Xms512M -XX:MaxPermSize=256m转载 2013-05-16 12:55:56 · 718 阅读 · 0 评论 -
Java中关于OOM的场景及解决方法
Java中关于OOM的场景及解决方法http://developer.51cto.com/art/201112/305696.htm1、OOM for Heap=>例如:java.lang.OutOfMemoryError: Java heap space分 析此OOM是由于JVM中heap的最大值不满足需要,将设置heap的最大值调高即可,参数样例为:-Xmx2G解转载 2015-02-11 11:56:07 · 652 阅读 · 0 评论 -
JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用工具有所了解。 现实企业级Java开发中,有时候我们会碰到下面这些问题:OutOfMemoryError,内存不足内存泄露线程死锁锁争用(Lock C...转载 2015-03-15 14:46:40 · 615 阅读 · 0 评论 -
Jconsole监控tomcat 的JVM内存(远程、linux、windows)
Jconsole监控tomcat 的JVM内存(远程、linux、windows)博客分类: WEB服务器Tomcat Jconsole是JDK自带的监控工具,在JDK/bin目录下可以找到。它用于连接正在运行的本地或者远程的JVM,对运行在java应用程序的资源消耗和性能进行监控,并画出大量的图表,提供强大的可视化界面。而且本身占用的服务器内存很小,甚至转载 2015-04-01 15:43:30 · 519 阅读 · 0 评论 -
配置Java远程监控授权(Java Mission Control)
配置Java远程监控授权(Java Mission Control) 转载URL: http://www.icoolxue.com/blog/show/9 最近公司做的项目有比较严重的内存溢出问题,也不知道是荣幸还是郁闷,经理将该问题交给我去自处理,经过一系列的Google,最终决定用Java Mission Control(JMC)来查找项目的内存溢出问题转载 2016-04-14 12:37:59 · 7935 阅读 · 0 评论 -
GC(垃圾处理机制)面试题
GC(垃圾处理机制)1: 详细解释Java中垃圾收集的主要流程。 垃圾收集主要有两种形式:手工、自动自动会不定期进行回收,以释放无用的空间手工调用的是System类中的gc()方法,此方法实际上调用的是Runtime类中的gc()方法,当一个对象被回收之前将调用类中的finlalize()方法,此方法为 Object类所提供,表示对象回收前的收尾工作。即使出现了异常,也不影响程序的执行,而且此方法...原创 2013-04-11 17:17:49 · 4913 阅读 · 1 评论