近期发现测试的项目中有JAVA内存泄露的现象.虽然JAVA有垃圾回收的机制,但是如果不及时释放引用就会发生内存泄露现象.在实际工作中我们使用Jprofiler调用java自带的 jmap来做检测还是很快能够定位到错误.不过亡羊补牢不如先把羊圈修补得好一些.下面这篇文章给出了几种常见的内存泄露类型.大家coding的时候注意一下. btw,一些静态代码扫描工具也能检测出不好的编程习惯带来潜在的内存泄露的风险. --------------------------------------------…
参考:https://blog.csdn.net/eff666/article/details/52784724 1.内存溢出  内存溢出:OOM(OutOfMemoryError)异常,即程序需要内存超出了虚拟机可以分配内存的最大范围.在Java 虚拟机规范的描述中,除了程序计数器外,虚拟机内存的其他区域都可能发生异常. 2.内存泄漏 内存泄漏是指无用对象(不再使用的对象)持续占有内存或无用对象的内存得不到及时释放,从而造成内存空间的浪费称为内存泄漏.内存泄露有时不严重且不易察觉,这样开发者就…
之前学习了很多涉及servlet的内容,本小结我们说一下监听器,说起监听器,编过桌面程序和手机App的都不陌生,常见的套路都是拖一个控件,然后给它绑定一个监听器,即可以对该对象的事件进行监听以便发生响应,从本质上来说这些都是观察者模式的具体实现,在web程序中的监听器也不例外.在Java Web程序中使用监听器可以通过以下两种方法:通过注解@WebListener来标识一个自定义的监听器:[java] view plain copy@WebListener public class Custom…
了解什么是可见性错误,为什么会发生,以及如何在并发Java应用程序中查找难以捉摸的可见性错误.这些问题你可能也遇到过,当在优锐课学习了一段时间后,我对这些问题有了一定见解,写下这篇文章和大家分享. 检测可见性错误的机会各不相同.在最佳情况下,可以在所有情况的90%中检测到以下可见性错误.在最坏的情况下,检测错误的机会低于百万分之一. 但是首先,什么是可见性错误? 什么是可见性错误? 当线程读取陈旧值时,会发生可见性错误.在以下示例中,一个线程向另一个线程发出信号以停止其while循环的处理: p…
如果您使用过 Apache Lucene 或 Apache Solr,就会知道它们的使用体验非常有趣.尤其在您需要扩展基于 Lucene 或 Solr 的解决方案时,您就会了解 Elasticsearch 项目背后的动机.Elasticsearch(构建于 Lucene 之上)在一个容易管理的包中提供了高性能的全文搜索功能,支持开箱即用地集群化扩展.您可以通过标准的 REST API 或从特定于编程语言的客户端库与 Elasticsearch 进行交互. 本教程将展示 Elasticsearch…
在Java Web程序中使用Hibernate与普通Java程序一样.本文中将使用Servlet和JSP结合Hibernate实现数据库表的增删改查操作. Web程序中,hibernate.cfg.xml中必须配置current_session_context_class参数.如果使用JBoss等内置Hibernae的容器,参数值要配置为jta,其他容器(如Tomcat等)需要配置为thread. 1. 创建工程并搭建Hibernate框架 在MyEclipse中创建一个Web工程,工程名为hi…
本指南介绍了 NetBeans IDE 对 Java 应用程序中 Bean 绑定和数据绑定的支持. 要学完本教程,您需要具备以下软件和资源. 软件或资源 要求的版本 NetBeans IDE 版本 7.1.7.2 或 7.3 Java 开发工具包 (JDK) 版本 6 或更高版本 简介:NetBeans IDE 中的 Bean 绑定 在发布 Bean 绑定库之前,将 UI 组件连接到数据库或将组件属性的值保持同步非常麻烦.例如,将标准数据库中的数据显示在 JTable 中需要手动创建实用程序类来…
声音可以创造意境,触发遐想,当与虚拟图像相结合时,更加可以让整个世界充满幻觉,声音是多媒体技术的基础. 播放声音是Java对多媒体的支持一个重要部分,它支持的声音文件类型主要有: AU - (扩展名为AU或SND)适用于短的声音文件. WAV - (扩展名为WAV)由 Microsoft和 IBM共同开发,几乎能被所有支持声音的Windows应用程序播放. AIFF - (扩展名为AIF或IEF)音频互换文件格式是为Macintosh计算机和Silicon Graphics (SGI)计算机所共…
如果您一直在阅读这个系列,那么您应该已经看到有各种各样使用 Groovy 的有趣方式,Groovy 的主要优势之一就是它的生产力.Groovy 代码通常要比 Java 代码更容易编写,而且编写起来也更快,这使得它有足够的资格成为开发工作包中的一个附件.在另一方面,正如我在这个系列中反复强调的那样,Groovy 并不是 —— 而且也不打算成为 —— Java 语言的替代.所以,这里存在的问题是,能否把 Groovy 集成到 Java 的编程实践中?或者说这样做有什么用?什么时候 这样做有用? 这个…
http://www.cr173.com/html/18898_all.html 内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对 C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃 C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支配权,还放弃了C++超绝的性能…
预习知识:python之MRO和垃圾回收机制 一.内存泄漏 像Java程序一样,虽然Python本身也有垃圾回收的功能,但是同样也会产生内存泄漏的问题.对于一个用 python 实现的,长期运行的后台服务进程来说,如果内存持续增长,那么很可能是有了"内存泄露". 1.内存泄露的原因 对于 python 这种支持垃圾回收的语言来说,怎么还会有内存泄露? 概括来说,有以下三种原因: 所用到的用 C 语言开发的底层模块中出现了内存泄露. 代码中用到了全局的 list. dict 或其它容器,…
一.Java内存回收机制 不论哪种语言的内存分配方式,都需要返回所分配内存的真实地址,也就是返回一个指针到内存块的首地址.Java中对象是采用new或者反射或者clone或者反序列化的方法创建的, 这些对象的创建都是在堆(Heap)中分配的,所有对象的回收都是由Java虚拟机通过垃圾回收机制完成的.GC为了能够正确释放对象,会监控每个对象的 运行状况,对他们的申请.引用.被引用.赋值等状况进行监控,Java会使用有向图的方法进行管理内存,实时监控对象是否可以达到,如果不可到达,则就将 其回收,这…
https://www.cnblogs.com/panxuejun/p/5883044.html 内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory: 内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光. memory leak会最终会导致out of memory! 以发生的方式来分类,内存泄漏可以分为4类: 1. 常…
1.内存泄漏 内存泄漏是指我们在堆中申请(new/malloc)了一块内存,但是没有去手动的释放(delete/free)内存,导致指针已经消失,而指针指向的东西还在,已经不能控制这块内存, 所以就是内存泄漏了,看下面的例子. void remodel(std::string &str){    std::string *ps = new std::string(str);  //创建了一个局部指针变量,函数调用结束后,指针变量消失,但堆中内存仍然被占用,没有被释放,导致内存泄漏    //内存…
1.语句和表达式 计算机程序是一组告诉计算机什么的指令,每一个指令称为语句. 2.指定变量类型 变量名.变量存储的信息类型 整型int(-2.14*109~2.14*109).浮点型float(38位十进制数).double(300位十进制数) Char.String,在程序中使用字符值时,必须用单引号将赋给变量的字符值括起来,而对于字符串值必须用双引号括起来 用等号 "=" 赋值,在JAVA程序中,可以用这种方法给任何变量赋值 尽管其他变量类型都是小写字母(int .float.ch…
背景 java程序中有时需要我们发起http级别的请求,例如抓数据或者第三方对接时,一般分为两种:一种是只需我们发起请求,还有一种是我们不但要发起请求,还要拿到请求后的数据来进行下一步处理 实现 针对以上两种情况我们来给出简单的实现,对于在技术实现上一般分为两类:通过HttpClient方式和通过流的形式: 只发送get请求 通过httpclient方式 public static String httpGet(String url, String charset) throws HttpExc…
一.准备工作: 下载PageOffice for  Java:http://www.zhuozhengsoft.com/dowm/ 二. 实现方法: 要调用PageOffice操作Word中的table,必须借助数据区域(DataRegion)实现的(原因是word中的表格只有index,没有name),要求数据区域完整的包含了整个Table的内容,这样才可以通过数据区域控制和操作table.而table的插入,既可以在Word模版中书签处手动插入:工具栏“插入”→“表格”,亦可以在程序中通过数…
本周主要学习了Java如何在程序中进行输入和输出,主要分为以下三种: 一.文本界面的输入与输出 1. 使用 javva.util.Scanner 类 2. 使用 in 及 out 二.图形界面的输入与输出 1.使用文本框对象获取用户输入的数据(TextField) 2.使用标签对象或文本框对象输出数据(Lable) 3.使用命令按钮来执行命令(Button) 三.Applet的输入与输出 1.使用 AppletInOut.java 2.使用 actionPerformed 函数处理具体事件…
内存泄漏是指:当一块内存被分配后,被丢弃,没有任何实例指针指向这块内存, 并且这块内存不会被GC视为垃圾进行回收.这块内存会一直存在,直到程序退出.C#是托管型代码,其内存的分配和释放都是由CLR负责,当一块内存没有任何实例引用时,GC会负责将其回收.既然没有任何实例引用的内存会被GC回收,那么内存泄漏是如何发生的? 内存泄漏示例 为了演示内存泄漏是如何发生的,我们来看一段代码 class Program { static event Action TestEvent; static void…
今天,在工作群中,被问到了内存泄漏和野指针指向的区别,自己答的不是很好,特意回来查了资料,在博文中总结一下经验,欢迎指正. 内存泄漏:是指在堆区,alloc 或new 创建了一个对象,但是并没有放到自动释放池中,或者没有free 对象,导致这块内存一直被占用,换一种方法说,就是没有指针指向这块内存,再通俗点,开辟了一段空间,在没有被释放之前,结果找不到这块内存了,这样就会造成内存泄漏的问题.这块内存会直至程序运行结束才会被释放. 野指针:是指针指向已经delete 的对象,或者是未申请访问的受限…
名词解释 内存泄漏:memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏危害能够忽略,但内存泄漏堆积后果非常严重,不管多少内存,迟早会被占光. 内存溢出:out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory.比方申请了一个Integer,但给它存了Long才干存下的数.那就是内存溢出.除此之外,也有一次性申请非常多内存.比方说一次创建大的数组或者是加载一个大文件如图片.非常多时候是图片的处理不当. memor…
WebView造成内存泄露 关于WebView的内存泄露,因为WebView在加载网页后会长期占用内存而不能被释放,因此我们在Activity销毁后要调用它的destory()方法来销毁它以释放内存. 另外在查阅WebView内存泄露相关资料时看到这种情况: Webview下面的Callback持有Activity引用,造成Webview内存无法释放,即使是调用了Webview.destory()等方法都无法解决问题(Android5.1之后). 最终的解决方案是:在销毁WebView之前需要先…
Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列举了一些面试笔试中常见的关于static的考题.以下是本文的目录大纲: 一.static关键字的用途 二.static关键字的误区 三.常见的笔试面试题 若有不正之处,希望谅解并欢迎批评指正. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnb…
import java.util.*; class Example2_5 { public static void main(String args[]) { int start=0,end,middle; int a[] = {12,45,67,89,123,-45,67}; int N = a.length; for(int i=0; i<N; i++) { //选择法排序数组 for(int j = i+1; j < N;j++){ if(a[j] < a[i]){ int t =…
目前网上能找到的读取Excel表格中数据的两种比较好的方案:PageOffice好用开发效率高:POI免费.供大家参考,针对具体情况选择具体方案. 1. PageOffice读取excel import com.zhuozhengsoft.pageoffice.*; import com.zhuozhengsoft.pageoffice.excelreader.*; //读取Excel单元格数据 Workbook workBook = new Workbook(request, response…
在 Java 语言众多的关键字中,final 关键字无疑是被提到最多的,也是在面试过程中经常被问到的知识点.今天,老王查找了很多材料,最后终于收集了关于 final 关键字比较全的知识点.首先,final 关键字可以修饰的对象有三个:一是修饰变量.二是修饰方法.三是修饰类,下面我们来看经过 final 关键字修饰的这三种对象会有着怎样的不同. 1,final 关键字修饰变量在使用 final 关键字修饰变量时,又可以分为两种情况:一种是基本数据类型的变量.另一种是引用类型的变量.final 关键…
以下是 Java web应用的常见编码问题 1. html页面的编码 在web应用中,通常浏览器会根据http header: Content-type的值来决定用什么encoding, 比如遇到Content-Type: text/html; charset=UTF-8, 页面使用的就UTF-8编码. 但是考虑到离线的html(用户可能把页面html保存到本地), 打开离线的html的时候就要在meta指定编码,当然不指定也会有default值,那么不指定有时就可能出现乱码. Meta标签 <…
方法1,给STATIC控件取个名字叫IDC_STATICTITLE 然后在ClassWizard中设定一个控件变量给它叫m_statictitle 然后用m_statictitle.SetWindowText("你要写的字串");updata(False); 方法2,给STATIC控件取个名字叫IDC_STATICTITLE GetDlgItem(IDC_STATICTITLE)->SetWindowText(_T("你要写的字串"));updata(Fals…
1.当除数是非0,除法运算完毕,程序继续执行. 2.当除数是0,程序发生异常,并且除法运算之后的代码停止运行.因为程序发生异常需要进行处理. class Demo { public static void main(String[] args) { div(2, 0); System.out.println("over"); } public static void div(int x, int y) { //该行代码的y值可能是0,程序会出现异常并停止 System.out.prin…
其实,解决办法比较简单,即:编译时指定编码为UTF-8,如: javac -encoding utf- HelloJava.java 这样,再运行时就不会出现乱码. 比较详细的内容可以参考:http://www.cnblogs.com/cy163/archive/2008/08/13/1267433.html…