![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java虚拟机
iteye_7017
这个作者很懒,什么都没留下…
展开
-
JAVA内存结构之运行时栈帧结构
1.1 运行时栈帧结构 栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈(Virtual Machine Stack)的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。每一个方法从调用开始到执行完成的过程,就对应着一个栈帧在虚拟机里面从入栈到出栈的过程。 每一个栈帧...原创 2016-07-23 16:48:37 · 123 阅读 · 0 评论 -
JVM start
Java内存访问重排序的研究http://blog.csdn.net/garfielder007/article/details/51160707 深入JVM锁机制2-Lockhttp://blog.csdn.net/chen77716/article/details/6641477原创 2016-10-05 16:49:46 · 107 阅读 · 0 评论 -
理解互斥量和信号量
理解互斥量和信号量原创 2016-08-24 15:47:03 · 76 阅读 · 0 评论 -
CAS操作
CAS是单词compare and set的缩写,意思是指在set之前先比较该值有没有变化,只有在没变的情况下才对其赋值。原创 2016-08-24 15:44:02 · 89 阅读 · 0 评论 -
锁优化
高效并发是JDK1.5到JDK1.6的一个重要改进,HotSpot虚拟机开发团队在这个版本上话费了大量的精力去实现各种锁优化技术,如适应性自旋(Adaptive Spinning),锁消除(Lock Elimination),锁粗化(Lock Coarsening),轻量级锁(Lightweight Locking)和偏向锁(Biased Locking)等,这些技术都是为了在线程之间更高效地共...原创 2016-08-24 08:19:38 · 75 阅读 · 0 评论 -
线程安全
并发处理的广泛应用是使得Amdah1定律代替摩尔定律成为计算机性能发展源动力的根本原因,也是人类“压榨”计算机运算能力的最有力武器。 首先要明白线程的工作原理,jvm有一个main memory,而每个线程有自己的working memory,一个线程对一个variable进行操作时,都要在自己的working memory里面建立一个copy,操作完之后再写入main ...原创 2016-08-23 08:48:48 · 73 阅读 · 0 评论 -
安全点(Savepoint)
在OopMap的协助下,HotSpot可以快速且准确地完成GC Roots枚举,但一个很现实的问题随之而来:可能导致引用关系变化,或者说OopMap内容变化的指令非常多,如果为每一条指令都生成对应的OopMap,那将会需要大量的额外空间,这样GC的空间成本将会变得很高。 实际上,HotSpot也的确没有为每条指令都生成OopMap,前面已经提到,只是在“特定的位置”记录了这些信息,这些位...原创 2016-08-16 14:45:46 · 438 阅读 · 1 评论 -
invokedynamic指令
1.http://blogs.oracle.com/jrose/entry/a_modest_tool_for_writing 翻译a modest tool for writing JSR 292 codeBy John.Rose-Oracle on Nov 15, 2010由John.Rose在2010年11月15日编写了一个用于开发满足JSR 292规范代码的简单工具 ...原创 2016-08-11 22:24:04 · 299 阅读 · 0 评论 -
早期编译期优化
1.Eclipse的Java编译器分析之一——ecj介绍http://www.cnblogs.com/Johness/p/3525032.html原创 2016-08-11 22:22:51 · 112 阅读 · 0 评论 -
java虚拟机 start
Java之深入JVM(6) - 字节码执行引擎(转)http://www.cnblogs.com/royi123/p/3569511.html原创 2016-08-06 11:36:30 · 80 阅读 · 0 评论 -
java虚拟机 jvm 局部变量表实战
http://blog.csdn.net/qq_30739519/article/details/51043512原创 2016-08-02 23:49:12 · 143 阅读 · 0 评论 -
visualVM
Serviceability Agent (SA)是啥?HotSpot Glossary of Terms 写道The Serviceablity Agent is collection of Sun internal code that aids in debugging HotSpot problems. It is also used by several JDK tool...原创 2016-07-26 20:38:23 · 165 阅读 · 0 评论 -
jps能够显示java进程但jconsole等监控工具无法连接问题
jps能够显示java进程但jconsole等监控工具无法连接问题1、jps的作用jps类似linux的ps命令,不同的是ps是用来显示进程,而jps只显示java进程,准确的说是当前用户已启动的部分java进程信息,信息包括进程号和简短的进程command。 2、某个java进程已经启动,用jps却显示不了该进程进程号这个问题已经碰到过两次了,所以在这里总结下。现象:...原创 2016-07-26 11:23:25 · 260 阅读 · 0 评论 -
内存分配与回收策略
一.对象优先在Eden分配 二.大对象直接进入老年代 三.长期存活的对象将进入老年代既然虚拟机采用了分代收集的思想来管理内存,那么内存回收时就必须能识别哪些对象应该放在新生代,哪些对象应该放在老年代中。为了做到这点,虚拟机给每个对象定义了一个对象年龄(Age)计数器。如果对象在Eden出生并经过第一次Minor GC后仍然存活,并且能被Survivor容纳的话,将被移...原创 2016-07-25 19:55:55 · 89 阅读 · 0 评论 -
JVM client模式和Server模式的区别
JVM Server模式与client模式启动,最主要的差别在于:-Server模式启动时,速度较慢,但是一旦运行起来后,性能将会有很大的提升。JVM如果不显式指定是-Server模式还是-client模式,JVM能够根据下列原则进行自动判断(适用于Java5版本或者Java以上版本)。前段时间有个同事给我发了个java跟c++性能比较的文章,其中有个对比图引起了我的兴趣,意外的是,我感兴趣...原创 2016-07-24 22:51:11 · 82 阅读 · 0 评论 -
使用-verbose:gc输出JVM的GC情况
Java应用启动时,可以通过设置verbose参数来输出JVM的gc情况,命令如下:java -verbose:gc在Eclipse中可以通过Run As|Run Configurations|Arguments|VM Arguments进行设置。使用该命令后输出如下:[Full GC 1224K->1113K(123584K), 0.0120528 secs]箭头(-&...原创 2016-07-23 17:38:38 · 1327 阅读 · 1 评论 -
内存访问重排序与内存可见性
计算机系统中,为了尽可能地避免处理器访问主内存的时间开销,处理器大多会利用缓存(cache)以提高性能。其模型如下图所示。在这种模型下会存在一个现象,即缓存中的数据与主内存的数据并不是实时同步的,各CPU(或CPU核心)间缓存的数据也不是实时同步的。这导致在同一个时间点,各CPU所看到同一内存地址的数据的值可能是不一致的。从程序的视角来看,就是在同一个时间点,各个线程所看到的共享变量的...原创 2016-10-06 15:45:57 · 198 阅读 · 0 评论