测试Java Applet内存泄露(非开发环境)

问题描述

我有一个VB.NET开发的桌面程序,里面调用了IE浏览器控件,连接到一个URL,这个URL包含有一个JavaApplet。现在怀疑这个Java小程序有内存泄露的问题,最后导致我的程序运行越来越慢,直到崩溃。但是这个JavaApplet并不是我们开发的,而是国外制造的一个小设备产生的(这个小设备只有一根网线接口,不能接鼠标键盘控制,只知道里面运行了Linux)。我如何收集数据,证明这个JavaApplet的对或错呢?我先使用了JProbe和YourKitJavaProfiler,发现它们都必须和开发环境绑定才能检测。后来,我又尝试用JProfiler,发现它只是在自己的框架内部启动Applet时,才能监控内存使用情况。它似乎不能监测由我的程序调用Applet时的内存使用情况。请问,我应该怎么办?我的Java知识有限。不胜感谢!!!

解决方案

解决方案二:
可以这样子考虑,既然是applet,自己写个javaapplication。在application里调用applet,并监控jvm的内存使用情况,应该能有斩获。
解决方案三:
也可以自己写一个applet,继承那个applet程序,至于java的内存监控,可以参考%jdk_path%demomanagementMemoryMonitor

时间: 2024-11-17 02:26:25

测试Java Applet内存泄露(非开发环境)的相关文章

Java直接内存与非直接内存性能测试

什么是直接内存与非直接内存 根据官方文档的描述: A byte buffer is either direct or non-direct. Given a direct byte buffer, the Java virtual machine will make a best effort to perform native I/O operations directly upon it. That is, it will attempt to avoid copying the buffe

java造成内存泄露原因

一.Java内存回收机制 不论哪种语言的内存分配方式,都需要返回所分配内存的真实地址,也就是返回一个指针到内存块的首地址.Java中对象是采用new或者反射的方法创建的,这些对象的创建都是在堆(Heap)中分配的,所有对象的回收都是由Java虚拟机通过垃圾回收机制完成的.GC为了能够正确释放对象,会监控每个对象的运行状况,对他们的申请.引用.被引用.赋值等状况进行监控,Java会使用有向图的方法进行管理内存,实时监控对象是否可以达到,如果不可到达,则就将其回收,这样也可以消除引用循环的问题.在J

java web 内存泄露问题

问题描述 java web 内存泄露问题 在做web项目,需要从数据库一次读取多个数据,然后填充到bean里放入list,这样在循环读取的时候每次都要创建一个bean对象,之前访问量小没什么,现在访问量大了,程序占用越来越高,这应该怎么办? 解决方案 看下有没有对象在持续引用bean对象,特别是静态成员.把jvm的内存调大 解决方案二: Java的一个重要优点就是通过垃圾收集器(Garbage Collection,GC)自动管理内存的回收,程序员不需要通过调用函数来释放内存.因此,很多程序员认

JAVA学习(一):Java介绍及其平台、开发环境的配置与搭建

Java介绍及其平台.开发环境的配置与搭建 1.Java的介绍 Java是一种面向对象的编程语言,具有跨平台.可移植.分布式.简单.可扩展等诸多特性.Java可以进行桌面应用.Web应用.分布式系统及嵌入式等应用程序的开发. Java包含3个不同版本,即J2ME/J2EE/J2SE(微缩版/企业版/标准版). 2.JDK的下载与安装.配置 (1).JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

再谈java的内存泄露

这两天看了一本老书<bitter java>,第一次系统地了解了所谓"反模式".就书的内容来说已经过于陈旧,书中提到的magic servlet.复合jsp等等反模式已经是早就熟知的编程禁忌,而如web页面不能有太多元素这样的反模式也因为ajax的出现(异步加载)变的不是那么"反模式"了,其中又讲述了很多ejb的反模式,这些在轻量级框架流行的今天也早已经过时.不过书中有一个章节倒是挺有价值,讲述的是java的内存泄露问题,我认为是我目前读的关于这方面问题

(6)java的内存泄露问题

一:什么是内存泄露--->Java的一个最显著的优势是内存管理.你只需要简单的创建对象而不需要负责释放空间,因为Java的垃圾回收器会负责内存的回收.然而,情况并不是这样简单,内存泄露还是经常会在Java应用程序中出现--->内存泄露的定义:对于应用程序来说,当对象已经不再被使用,但是Java的垃圾回收器不能回收它们的时候,就产生了内存泄露.要理解这个定义,我们需要理解对象在内存中的状态.如下图所示,展示了哪些对象是无用对象,哪些是未被引用的对象: ---->上图中包含了未引用对象和引用

内存泄露-vc开发的程序占用内存一直在增大,是什么原因导致的?

问题描述 vc开发的程序占用内存一直在增大,是什么原因导致的? vc开发的程序占用内存一直在增大,是什么原因导致的?用bound checker也没检测到内存泄露啊,只是软件变得很卡. 解决方案 内存泄露只是没释放就直接放弃引用.也可能你一直引用着但是不再实际使用,这个是工具检查不出来的. 还是代码问题啊. 解决方案二: 你的程序有内存泄漏,多检查你的代码分配堆的地方 还有可能有其他资源泄漏.比如句柄,等 解决方案三: 1.你的程序应该是服务性程序吧,一直在运行: 2.检查自己检查代码,或者用内

Windows下Java+MyBatis框架+MySQL的开发环境搭建教程_java

MyBatis是一个Java持久化框架,它通过XML描述符或注解把对象与存储过程或SQL语句关联起来. MyBatis是在Apache许可证 2.0下分发的自由软件,是iBATIS 3.0的分支版本.其维护团队也包含iBATIS的初创成员. 与其他的对象关系映射框架不同,MyBatis并没有将Java对象与数据库表关联起来,而是将Java方法与SQL语句关联.MyBatis允许用户充分利用数据库的各种功能,例如存储过程.视图.各种复杂的查询以及某数据库的专有特性.如果要对遗留数据库.不规范的数据

JAVA程序内存泄露问题

问题描述 使用quartz每20秒执行一次任务,任务中使用kettle做了一系列的数据抽取转换.程序跑了12个小时后内存从100上升到400.使用jmap导出内存查看后发现内存增长后组要是Unreachableobjects占用在增长.以下是Unreachableobjects的明细图:请问又没有朋友遇到过这样的情况,或者有什么排查的好办法? 解决方案 解决方案二:等待学习--解决方案三:quartz的线程初始化是10个,看下线程是不是一直在增加解决方案四:该回复于2011-03-25 13:2