关闭
当前搜索:

全面理解Java内存模型

http://m.blog.csdn.net/suifeng3051/article/details/52611310 Java内存模型即Java Memory Model,简称JMM。JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。JVM是整个计算机虚拟模型,所以JMM是隶属于JVM的。 如果我们要想深入了解Java并发编程,就要先理解好Ja...
阅读(121) 评论(0)

浅析java内存模型--JMM(Java Memory Model)

在并发编程中,多个线程之间采取什么机制进行通信(信息交换),什么机制进行数据的同步?   在Java语言中,采用的是共享内存模型来实现多线程之间的信息交换和数据同步的。   线程之间通过共享程序公共的状态,通过读-写内存中公共状态的方式来进行隐式的通信。同步指的是程序在控制多个线程之间执行程序的相对顺序的机制,在共享内存模型中,同步是显式的,程序员必须显式指定某个方法/代码块需要在多线...
阅读(103) 评论(0)

Java虚拟机解析篇之---垃圾回收器

上一篇说了虚拟机的内存模型,在说到堆内存的时候我们提到了,堆内存是Java内存中区域最大的一部分,而且垃圾回收器主要就是回收这部分的内容。那么这篇就来介绍一下垃圾回收器的原理以及回收的算法。 Java中的垃圾回收器(GC)是Java中比较有特色的一点,不需要我们手动的去管理一个对象,不想C++中的构造函数和析构函数一样,需要程序猿自己去手动的管理,很容易造成内存泄露的问题。当然如果学过OC语...
阅读(247) 评论(0)

[置顶] Java虚拟机解析篇之---内存模型

今天闲来无事来,看一下Java中的内存模型和垃圾回收机制的原理,关于这个方面的知识,网上已经有很多现成的资料可以供我们参考,但是知识还是比较杂的,在这部分知识点中有一本书不得不推荐:《深入理解Java虚拟机》,现在已经是第二版了。这本书就从头开始详细介绍了Java整个虚拟机的模型以及Java的类文件结构,加载机制等。这里大部分的知识点都是可以在这本书中找到的,当然我是主要还是借鉴这本书中的很多内容...
阅读(402) 评论(0)

Java 的方法签名与字段类型表示-[Ljava.lang.String;

我们什么时候会接触到 Java 的方法签名呢?在进行 JNI 调用时,还有在看方法重载时。重载的方法是有不同的方法签名的,而是不区分返回值,而实际方法签名还揉入了返回值类型的,还有就是 javap -s 查看方法签名时,如 javap -s java.util.Date。 看来方法签名与我们实际工作的关系还真的不大。倒是有次遇着了,事出于 Struts2 应用中提交表单时报出了下面的错误: ...
阅读(1621) 评论(0)

Tomcat 启动命令行参数

CATALINA_OPTS="$CATALINA_OPTS -server -Djava.awt.headless=true -Xms2560m -Xmx2560m -Xss512k -XX:PermSize=128m -XX:MaxPermSize=384m  -XX:NewSize=1024m -XX:MaxNewSize=1024m -XX:SurvivorRatio=22 -XX:+Us...
阅读(665) 评论(0)

JVM参数:MaxTenuringThreshold和TargetSurvivorRatio说明

-XX:MaxTenuringThreshold 在新生代中对象存活次数(经过Minor GC的次数)后仍然存活,就会晋升到旧生代。 -XX:TargetSurvivorRatio 一个计算期望存活大小Desired survivor size的参数. 计算公式: (survivor_capacity * TargetSurvivorRatio) / 100 * sizeof(a ...
阅读(543) 评论(0)

聊聊JVM的年轻代

1.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能。你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我们要找到哪些对象没用,这样就会对堆的所有区域进行扫描。而我们的很多对象都是朝生夕死的,如果分代的话,我们把新创建的对象放到某一地方,当GC的时候先把这块存“朝生夕死”对象的区域进行回收,这样就会...
阅读(714) 评论(0)

JVM 触发Full gc条件

本文参考:http://blog.csdn.net/chenleixing/article/details/46706039  给出各个场景下可能触发full gc的实例代码. 1.调用System.gc import java.util.ArrayList; import java.util.List; /** * * created by: gaoxingliang@outl...
阅读(1050) 评论(0)

类加载器和双亲委派模型

类加载器按照层次,从顶层到底层,分为以下三种:  (1)启动类加载器(Bootstrap ClassLoader)   这个类加载器负责将存放在JAVA_HOME/lib下的,或者被-Xbootclasspath参数所指定的路径中的,并且是虚拟机识别的类库加载到虚拟机内存中。启动类加载器无法被Java程序直接引用。  (2)扩展类加载器(Extension ClassLoader)   这...
阅读(519) 评论(0)

JAVA和JVM运行原理揭秘

JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器。它是一种利用软件方法实现的抽象的计算机基于下层的操作系统和硬件平台,可以在上面执行java的字节码程序。 AD:   这里和大家简单分享一下JAVA和JVM运行的原理,Java语言写的源程序通过Java编译器,编译成与平台无关的‘字节码程序’(.class文件,也就是0,1二进制程序),然后在O...
阅读(1006) 评论(0)

JVM性能调优

最近因项目存在内存泄漏,故进行大规模的JVM性能调优 , 现把经验做一记录。 一、JVM内存模型及垃圾收集算法  1.根据Java虚拟机规范,JVM将内存划分为: New(年轻代)Tenured(年老代)永久代(Perm)   其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,Perm不属于堆内存,有虚拟机直接分配,但可以通过...
阅读(522) 评论(0)

eclipse的优化 gc.log

原帖:http://www.javaeye.com/topic/756538 性能优化从身边做起。    首先建立评估体系,将workspace里所有的项目close掉,关闭eclipse。优化的用例就是启动eclipse,open一个项目,eclipse会自动build这个项目,保证没有感觉到明显的卡,也就是没有full GC。   开始:   eclipse.ini里加...
阅读(2977) 评论(0)

深入研究Java类加载机制

类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指导开发者采取更有效的措施配合程序执行。 研究类加载机制的第二个目的是让程序能动态的控制类加载,比如热部署等,提高程序的灵活性和适应性。   一、简单过程   Java程序运行的场所是内存,当在命令行下执行: java HelloWorld 命令的时候,JVM会将HelloWorld.class加载到内存中,并...
阅读(811) 评论(0)

JVM内存参数详解以及配置调优

基本概念: PermGen space:全称是Permanent Generation space。就是说是永久保存的区域,用于存放Class和Meta信息,Class在被Load的时候被放入该区域 Heap space:存放Instance。GC(Garbage Collection)应该不会对PermGen space进行清理 所以如果你的APP会LOAD很多CLASS的话,就很可能出现...
阅读(1204) 评论(0)
16条 共2页1 2 下一页 尾页
    个人资料
    • 访问:8552615次
    • 积分:72222
    • 等级:
    • 排名:第24名
    • 原创:258篇
    • 转载:2779篇
    • 译文:3篇
    • 评论:750条
    文章分类
    最新评论