![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
i李小武
上帝把所有人都骗了,因为地狱才是最美的。。。佛知道真相,所以佛说:“我不入地狱,谁入地狱?”
展开
-
Java 中的语法糖 (Syntactic Sugar)
语法糖(Syntactic Sugar),也叫糖衣语法,是英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语。指的是,在计算机语言中添加某种语法,这种语法能使程序员更方便的使用语言开发程序,同时增强程序代码的可读性,避免出错的机会;但是这种语法对语言原创 2011-09-18 15:12:40 · 19769 阅读 · 6 评论 -
跨平台获取java进程id(Process ID in Java)
原创地址:http://blog.lichengwu.cn/java/2012/01/18/get-jvm-pid-on-multi-platform/ 对于不同平台,获取java进程id有不同的方法,这个做一个总结,写一个工具类。这个工具主要进行两种尝试来获得pid:从 java.lang.management.RuntimeMXBean获得从操作系统获得win...2012-01-18 19:20:21 · 381 阅读 · 0 评论 -
[转载]hotspot源码(JDK7)
源码结构图,方便理解: ├─agent Serviceability Agent的客户端实现├─make 用来build出HotSpot的各种配置文件├─src HotSpot VM的源代码│ ├─cpu ...原创 2012-01-19 19:25:37 · 231 阅读 · 0 评论 -
利用VisualVM监视远程JVM
VisualVM介绍VisualVM是集成了多个JDK命令工具的一个可视化工具,它主要用来监控JVM的运行情况,可以用它来查看和浏览Heap Dump、Thread Dump、内存对象实例情况、GC执行情况、CPU消耗以及类的装载情况。在JDK Update7之后,VisualVM作为JDK的一部分发布,但同时VisualVM也发布独立的版本。VisualVM必须运行在JDK1.6以上的V...2011-11-17 20:06:24 · 151 阅读 · 0 评论 -
[转载]理解 CMS GC 日志
CMS GC with -XX:+PrintGCDetails and -XX:+PrintGCTimeStamps prints a lot of information. Understanding this information can help in fine tuning various parameters of the application and CMS to ac...原创 2011-11-22 14:52:33 · 152 阅读 · 0 评论 -
Java内存管理——垃圾收集概念及特点
碎碎念,介绍Java内存管理基础知识1.自动内存管理 内存管理就是查找出不再使用的对象,释放这些对象占用的内存空间,为其他对象的分配提供足够的内存空间。在一些编程语言(C,C++)中,内存管理是程序员的职责。内存管理使开发变得复杂,而且会造成许多潜在的bug和不可知的崩溃。导致程序猿花费大量时间debug来修复这些很隐蔽的问题。 在精确的内存管理中经常发生一个问题是悬摆...2012-02-03 12:37:12 · 86 阅读 · 0 评论 -
ubuntu12.04上编译openjdk7
获取源码从openjdk代码仓库获取(比较慢)安装mercurialMercurial是一个版本管理工具。sudo apt-get install mercurial将以下内容添加到$HOME/.hgrc文件中,如果没有则自己创建一个:[extensions]forest=/home/lichengwu/hgforest-crew/fore...2012-06-13 15:31:31 · 164 阅读 · 0 评论 -
Garbage First(G1)介绍
介绍:Garbage First(G1)致力于在多CPU和大内存服务器上对垃圾收集提供软实时目标(soft real-time goal)和高吞吐量(high throughput)。从JDK 6u14开始就已经在Hotspot上试验,到现在的DK7依然没有走出实验室:#java -versionjava version "1.7.0_03"Java(TM) SE Runt...原创 2012-07-08 13:34:05 · 132 阅读 · 0 评论 -
[转载]PrintCompilation 参数解释
英文不好,所以就不翻译了:b Blocking compiler (always set for client)* Generating a native wrapper% On stack replacement (where the compiled code is running)! Method has exception handlerss ...原创 2012-03-27 13:59:42 · 411 阅读 · 0 评论 -
一些参数,弥补CMS(Concurrent Mark-Sweep)收集器的缺点
CMS缺点:http://softbeta.iteye.com/blog/1315103参数根据具体应用设置,不是有参数就好。1.关于碎片问题:CMS采用Mark-Sweep算法进行垃圾会后,不会对堆空间进行整理和压缩,每次回收后不可避免会有一些碎片产生。-XX:+UseCMSCompactAtFullCollection defau...原创 2012-03-28 21:11:58 · 346 阅读 · 0 评论 -
jinfo 查看、设置JVM参数
用法:# jinfo -hUsage: jinfo [option] <pid> (to connect to running process) jinfo [option] <executable <core> (to connect to a core file) jinfo [opt...2012-04-25 15:36:05 · 607 阅读 · 0 评论 -
了解CMS(Concurrent Mark-Sweep)垃圾回收器
1.总体介绍:CMS(Concurrent Mark-Sweep)是以牺牲吞吐量为代价来获得最短回收停顿时间的垃圾回收器。对于要求服务器响应速度的应用上,这种垃圾回收器非常适合。在启动JVM参数加上-XX:+UseConcMarkSweepGC,这个参数表示对于老年代的回收采用CMS。CMS采用的基础算法是:标记—清除。2.CMS过程:初始标记(STW initial...2011-12-27 20:13:29 · 344 阅读 · 0 评论 -
[转载]Java 虚拟机指令
0x00 nop 什么都不做 0x01 aconst_null 将null推送至栈顶 0x02 iconst_m1 将int型-1推送至栈顶 0x03 iconst_0 将int型0推送至栈顶 0x04 iconst_1 将int型1推送至栈顶 0x05 iconst_2 将int型2推送至栈顶 0x06 iconst_3 将int型3推送至栈...原创 2011-10-28 20:18:27 · 82 阅读 · 0 评论 -
JVM 垃圾回收算法
在说垃圾回收算法之前,先谈谈JVM怎样确定哪些对象是“垃圾”。1.引用计数器算法:引用计数器算法是给每个对象设置一个计数器,当有地方引用这个对象的时候,计数器+1,当引用失效的时候,计数器-1,当计数器为0的时候,JVM就认为对象不再被使用,是“垃圾”了。引用计数器实原创 2011-09-19 19:13:17 · 13812 阅读 · 1 评论 -
JVM 类加载过程
类从加载到虚拟机到卸载,它的整个生命周期包括:加载(Loading),验证(Validation),准备(Preparation),解析(Resolution),初始化(Initialization),使用(Using)和卸载(Unloading)。其中,验证、准备和解析部分被称原创 2011-09-20 15:16:07 · 19843 阅读 · 2 评论 -
JVM 运行时数据区域
Java虚拟机管理的内存包括以下几个运行时数据区域:1.程序计数器: 程序计数器是一块比较小的内存空间,是当前线程执行的字节码行号指示器。Java多线程是通过线程轮流切换来实现的,所以每个线程都有一个自己独立的程序计数器,各个线程的程序计数器互补干扰原创 2011-09-23 15:18:03 · 1657 阅读 · 0 评论 -
[转载]堆和栈的区别
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 ...2010-09-07 00:19:00 · 73 阅读 · 0 评论 -
JVM 垃圾回收算法
原文地址:http://blog.lichengwu.cn/jvm/2011/09/19/jvm-garbage-collection-algorithms/ 在说垃圾回收算法之前,先谈谈JVM怎样确定哪些对象是“垃圾”。1.引用计数器算法:引用计数器算法是给每个对象设置一个计数器,当有地方引用这个对象的时候,计数器+1 ,当引用失效的时候,计数器 -1 ,当计数器为 0 的...2011-09-19 19:13:00 · 131 阅读 · 0 评论 -
JVM 类加载过程
类从加载到虚拟机到卸载,它的整个生命周期包括:加载(Loading),验证(Validation),准备(Preparation),解析(Resolution),初始化(Initialization),使用(Using)和卸载(Unloading)。其中,验证、准备和解析部分被称为连接(Linking)。加载: 在加载阶段,虚拟机主要完成三件事:1.通...2011-09-20 15:16:00 · 69 阅读 · 0 评论 -
JVM 运行时数据区域
Java虚拟机管理的内存包括以下几个运行时数据区域:1.程序计数器: 程序计数器是一块比较小的内存空间,是当前线程执行的字节码行号指示器。Java多线程是通过线程轮流切换来实现的,所以每个线程都有一个自己独立的程序计数器,各个线程的程序计数器互补干扰。2.Java虚拟机栈 Java虚拟机栈描述的是Java方法的执行模型:每个方法执行的时候都会...2011-09-23 15:18:00 · 82 阅读 · 0 评论 -
浅谈Java垃圾回收
垃圾回收,是java同c++的一个重大区别,也是编写java程序不用指针的一个重要保证。在c++中,当一个对象不再有价值的时候,我们需要手动的清除这个对象,以释放空间。在java中,这个工作由垃圾回收器自动完成,程序员不必考虑难缠的对象回收问题。一、垃圾回收的好处: 垃圾回收使程序员从释放内存的重担中解脱,可以把更多的精力放在编程和逻辑上,提高了效率。 垃圾回收保证了程序的正常运行,不会出现如...2011-02-25 21:29:00 · 101 阅读 · 0 评论 -
JVM问答
大部分内容来源网络,整理一下,留个底。问:堆和栈有什么区别? 答:堆是存放对象的,但是对象内的临时变量是存在栈内存中,如例子中的methodVar是在运行期存放到栈中的。 栈是跟随线程的,有线程就有栈,堆是跟随JVM的,有JVM就有堆内存。 问: 堆内存中到底存在着什么东西? 答:对象,包括对象变量以及对象方法。 问:类变量和实例变量有什么区别? ...2011-07-18 15:12:00 · 117 阅读 · 0 评论 -
Garbage First(G1) 日志分析工具
G1介绍:http://softbeta.iteye.com/blog/1562185用python写的一个分析G1日志工具,现在还不是很完善,有时间继续改进:目前只支持以下配置输出的GC日志:-XX:+UseG1GC-XX:+PrintGCDateStamps-XX:+PrintGCDetails-Xloggc:/Users/lichengwu/tmp/mtct/mtct...2012-12-22 22:35:39 · 349 阅读 · 0 评论