并发编程
线程通信
共享内存和消息传递
线程同步
控制不同线程的执行顺序
java并发
基于共享内存模型指令重排序
编译器重排序处理器重排序
cpu重排序写缓存区(cache、寄存器)
内存屏障顺序一致性与Happens-before执行结果有序性
volatile
解决内存可见性问题
锁
lock 显示锁
可中断可定时...
分类:
编程语言 时间:
2014-07-25 11:24:11
阅读次数:
275
客户反映系统越用越慢,重启服务器后段时间内系统恢复正常 老年代 垃圾回收不了。 full gc 每分钟执行40次左右。 开始以为是内存泄漏,导出jvm内存快照 快照中可以看到线程池里有问题。但是看不出具体的问题原因 ...
分类:
其他好文 时间:
2014-07-25 00:04:44
阅读次数:
379
Java本身是一种设计的很easy,很静止的语言,所以Java背后的原理也很easy,归结起来就是两点:1、JVM的内存管理理解了这一点,全部和对象相关的问题统统都能解决2、JVM Class Loader理解了这一点,全部和Java相关的配置问题,包含各种App Server的配置,应用的公布问题...
分类:
其他好文 时间:
2014-07-24 22:46:13
阅读次数:
233
Java本身是一种设计的很easy,很静止的语言,所以Java背后的原理也很easy,归结起来就是两点:1、JVM的内存管理理解了这一点,全部和对象相关的问题统统都能解决2、JVM Class Loader理解了这一点,全部和Java相关的配置问题,包含各种App Server的配置,应用的公布问题...
分类:
其他好文 时间:
2014-07-24 21:54:02
阅读次数:
250
Java堆用于存储对象实例,我们只要不断地创建对象,并且保证GCRoots到对象之间有可达路径来避免垃圾回收机制清楚这些对象,就会在对象数量到达最大堆的容量限制后产生内存溢出异常。代码清单中限制Java堆的大小为20MB,不可扩展(将堆的最小值-Xms参数与最大值-Xmx参数设置为一..
分类:
编程语言 时间:
2014-07-24 17:56:32
阅读次数:
264
如果你有一个web应用部署到Jetty,你能容易地从远程调试它。但首先你必须使用附加的参数启动远程JVM,然后在Eclipse中启动一个远程调试连接。这很容易就能做到。
注意:下面的例子假定你正在部署你的web应用到Jetty发布版本中。
设置Jetty调试端口
假定你将你的webapp部署到Jetty,有两种不同的方式设置调试端口:
通过命令行
在命令行中增加要求的参数如下:
$ j...
分类:
其他好文 时间:
2014-07-24 17:37:26
阅读次数:
248
JavaRebel是一个JVM插件(-javaagent),能够即时重载java class更改,因此不需要重新部署一个应用或者重启容器,节约开发者时间。JavaRebel 2.0的新特征:改变了方法体改变了class的结构,包括新增的方法,域,更改/添加注释,接口……更改了对Spring, Gui...
分类:
编程语言 时间:
2014-07-24 17:15:15
阅读次数:
253
深入研究Java类加载机制
类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指导开发者采取更有效的措施配合程序执行。
研究类加载机制的第二个目的是让程序能动态的控制类加载,比如热部署等,提高程序的灵活性和适应性。
一、简单过程
Java程序运行的场所是内存,当在命令行下执行:
java HelloWorld
命令的时候,JVM会将HelloW...
分类:
编程语言 时间:
2014-07-24 11:29:42
阅读次数:
323
1. 开发了一个简单的监视weblogic运行情况的小程序,各位朋友下载下来试试,不用登陆console就可以知道server的运行状况,包括了jvm、线程、jdbc、状态jms等;还有一个更简单的选项,下拉选“warning”,直接查看是否有等待队列、jvm紧张阿、连接池泄漏阿、连接池等待阿;
2. 已经上传 weblogic_monitor.jar ,jar包里面有readme...
分类:
Web程序 时间:
2014-07-24 10:44:33
阅读次数:
324
Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机的进程的启动而存在,有些区域则是依赖用户的线程的启动和结束而建立和销毁。Java虚拟机所管理的内存将会包括一下几个运行..
分类:
其他好文 时间:
2014-07-23 21:27:36
阅读次数:
221