小编ved*_*boy的帖子

关于VSS/RSS/PSS/USS的解释是否准确?

我读了关于VSS/RSS/PSS/USS的解释:


这篇文章的目的是提供有助于解释各种工具的内存报告的信息,以便确定Linux进程和系统的真正内存使用情况.

Android有一个名为procrank(/ system/xbin/procrank)的工具,它按从高到低的顺序列出了Linux进程的内存使用情况.每个过程报告的大小是VSS,RSS,PSS和USS.

为了本说明书的简单起见,存储器将以页面而不是字节表示.像我们这样的Linux系统在最低级别管理4096字节页面的内存.

VSS(从ps报告为VSZ)是进程的总可访问地址空间.此大小还包括可能不驻留在RAM中的内存,如已分配但未写入的malloc.VSS几乎没有用于确定进程的实际内存使用情况.

RSS是进程RAM中实际保存的总内存.RSS可能会产生误导,因为它报告了该进程使用的所有共享库的总数,即使共享库仅加载到内存中一次,无论有多少进程使用它.RSS不能准确表示单个进程的内存使用情况.

PSS与RSS的不同之处在于它报告其共享库的比例大小,即如果三个进程都使用具有30个页面的共享库,则该库将仅向为三个进程中的每个进程报告的PSS贡献10个页面.PSS是一个非常有用的数字,因为当系统中所有进程的PSS相加时,这是系统中总内存使用量的良好表示.当进程被终止时,为其PSS贡献的共享库将按比例分配给仍在使用该库的其余进程的PSS总计.这样,PSS可能会产生一些误导,因为当一个进程被终止时,PSS无法准确地表示返回整个系统的内存.

USS是进程的总私有内存,即该进程完全独特的内存.USS是一个非常有用的数字,因为它表示运行特定进程的真正增量成本.当进程被终止时,USS是实际返回给系统的总内存.当最初怀疑某个进程中的内存泄漏时,USS是最好的数字.

对于具有Python可用的系统,还有一个名为smem的漂亮工具,它将报告包括所有这些类别的内存统计信息.

# procrank
procrank
PID      Vss        Rss           Pss         Uss   cmdline
481   31536K   30936K   14337K    9956K  system_server
475   26128K   26128K   10046K    5992K  zygote
526   25108K   25108K    9225K    5384K  android.process.acore
523   22388K   22388K    7166K    3432K  com.android.phone
574   21632K   21632K    6109K    2468K  com.android.settings
521   20816K   20816K    6050K    2776K  jp.co.omronsoft.openwnn
474    3304K    3304K    1097K     624K   /system/bin/mediaserver
37     304K      304K     289K      288K  /sbin/adbd
29     720K      720K     261K      212K  /system/bin/rild
601     412K     412K     225K      216K  procrank
   1 …
Run Code Online (Sandbox Code Playgroud)

android memory-management

49
推荐指数
1
解决办法
3万
查看次数

libgdx:使用spritebatch绘制纹理时旋转纹理

我在绘制时试图旋转纹理.我认为这样做比在paint.net中将图像旋转90度并将它们保存在不同的文件中更有意义.我看了想spritebatch绘图参数的api文档,但我只是不明白.有一堆参数,如srcX,srcY,originX等.另外我想知道如何对纹理区域做同样的事情.下面是api文档页面的链接:http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/g2d/SpriteBatch.html

谢谢!

textures rotation libgdx

12
推荐指数
1
解决办法
2万
查看次数

通过拖动鼠标滚动JScrollPane(Java swing)

我正在为我正在制作的游戏制作地图编辑器.JScrollPane中有一个JPanel,用于显示要编辑的地图.我想要做的是,当用户按住空格键并在JPanel中拖动鼠标时,JScrollPanel将随拖动一起滚动.这是我到目前为止:

panelMapPanel.addMouseMotionListener(new MouseMotionListener(){

        @Override
        public void mouseDragged(MouseEvent e) {
            //Gets difference in distance x and y from last time this listener was called
            int deltaX = mouseX - e.getX();
            int deltaY = mouseY - e.getY();
            mouseX = e.getX();
            mouseY = e.getY();
            if(spacePressed){
                //Scroll the scrollpane according to the distance travelled
                scrollPane.getVerticalScrollBar().setValue(scrollPane.getVerticalScrollBar().getValue() + deltaY);
                scrollPane.getHorizontalScrollBar().setValue(scrollPane.getHorizontalScrollBar().getValue() + deltaX);
            }
        }

});
Run Code Online (Sandbox Code Playgroud)

目前它的工作原理但滚动并不顺畅.一次移动鼠标很好但是做小拖动会使滚动条变得狂暴.

任何想法如何改善这个?

对于那些喜欢视觉帮助的人,这里是编辑:

地图编辑器

加法笔记(编辑):

  • 我试过了 scrollPane.getViewport().setViewPosition(new Point(scrollPane.getViewport().getViewPosition().x + deltaX, scrollPane.getViewport().getViewPosition().y + deltaY));
  • 当慢慢移动鼠标时,拖动更加烦躁,而大动作则更加平滑
  • 我没有运气就尝试使用scrollRectToVisible

java mouse swing scroll

7
推荐指数
2
解决办法
5572
查看次数

MongoDB:注册编解码器 (Java)

我已经尝试了大约一个小时来注册我在我正在开发的游戏中为我的一个课程制作的编解码器。该类称为Item. 我尝试了这 3 个地方的代码和建议:

这是我想出的代码:

CodecRegistry defaultCodecRegistry = MongoClient.getDefaultCodecRegistry();
MyCodecProvider myCodecProvider = new MyCodecProvider();
ItemCodec itemCodec = new ItemCodec(defaultCodecRegistry);

CodecRegistry codecRegistry = CodecRegistries.fromRegistries(CodecRegistries.fromCodecs(itemCodec), CodecRegistries.fromProviders(myCodecProvider), defaultCodecRegistry);;
MongoClientOptions options = MongoClientOptions.builder().codecRegistry(codecRegistry).build();

client = new MongoClient("localhost:27017", options);
Run Code Online (Sandbox Code Playgroud)

所以我构建了一个名为的编解码器和编解码器提供程序 MyCodecProvider,所以我做错了什么,这怎么会这么复杂?我错过了什么吗?这似乎比它需要的更复杂。如果您需要更多代码,请询问。谢谢。

编辑:我得到的确切错误是org.bson.codecs.configuration.CodecConfigurationException: Can't find a codec for class [Lnet.hollowbit.archipeloserver.items.Item;.另外,我正在尝试解析一个 Item 数组,我是否也需要专门为该数组制作编解码器?

java codec mongodb

6
推荐指数
2
解决办法
1万
查看次数

LibGDX - 将跨平台客户端连接到服务器(HTML5/GWT、iOS、Android 和桌面)

周末我为我正在制作的游戏设置了所有网络。我以本教程为基础:GamesFromScratch.com Basic LibGDX Networking。它说它只支持 TCP,但我对此没有意见,因为我可以想出一些办法,而且网上有很多关于如何在没有 UDP 的情况下制作实时游戏的资料。完成后,我在桌面、android 和 HTML5/GWT 上对其进行了测试。桌面和 android 工作,但 GWT 没有。我做了一些研究,发现 Gdx.net 不支持 GWT,这篇文章没有警告我:/基本上现在我正在尝试找到一种适用于所有 libgdx 平台的替代解决方案。

我研究了带有 Socket IO 的 Websockets。以下是我为以下项目找到的 Java 库:ClientServer。服务器库说它与客户端一起运行良好,令人放心。这似乎是一个很好的解决方案,但我有几个问题:

- 客户端库是否适用于所有平台?似乎它可以在 android 和桌面上运行,因为它们不必转换为另一种语言,但是 GWT 和 iOS 呢?而且不仅可以工作,还可以使用服务器库连接到服务器。

- 使用 websockets 时有什么需要注意的吗?

谢谢。

编辑:我做了更多的研究,我找到了Jetty。我环顾四周,它似乎与 GWT 兼容,我只需要知道它是否也与 iOS 兼容。我也可以使用 Jetty 作为我的服务器 api 吗?

java websocket libgdx socket.io

5
推荐指数
1
解决办法
2274
查看次数

`instanceof`检查什么来确定对象类型?

我正在使用kryonet从服务器和客户端来回发送对象.只要收到对象,就会运行一个侦听器.它似乎决定对象实例的唯一方法是使用:

if(object instanceof ClientLoginPacket){
    //Do stuff
}
Run Code Online (Sandbox Code Playgroud)

我想知道什么是instanceof检查以确定对象是否属于特定类型.它检查类是否与所有代码完全相同,是否检查变量和名称?它也检查导入的包吗?你给我的任何信息都可以提供帮助.

我想知道这个的原因是因为我制作数据包的方式,服务器方法中的代码与客户端不同.例如,在我的客户端发送数据包我做:

public void send(){
    Client.sendPacketTCP(this);
}
Run Code Online (Sandbox Code Playgroud)

在我的服务器上我这样做:

public void send(){
    Server.sendPacketTCP(this);
}
Run Code Online (Sandbox Code Playgroud)

java networking instanceof packet kryonet

3
推荐指数
1
解决办法
270
查看次数

Egit:设置gitignore忽略所有eclipse项目文件

我在github上有一个项目,我想从中删除所有与eclipse相关的文件,并允许克隆它的人使用他们想要的任何ide.这是项目:https://github.com/vedi0boy/Archipelo

我要把什么放在我的gitignore?我对整个版本控制管理器的事情仍然很陌生,所以你不必告诉我究竟要放什么,但也许可以解释它是如何工作的,以及要注意什么,以便它仍然可以工作.

顺便说一句,它使用gradle所以我也喜欢它,以便gradle相关文件保持不变,因为克隆人需要它们来构建项目,我打算删除'APIs'文件夹,只使用gradle依赖.

java eclipse git gitignore gradle

1
推荐指数
1
解决办法
1万
查看次数